django ListView的使用 ListView中获取url中的参数值方式
作者:parhats 发布时间:2022-06-17 10:41:57
view.py
from django.views.generic import ListView,DetailView
from xxxx.models import Model_Name
class Colortag_view(ListView):
#context_object_name = '如果不指定的话在html页面中 可以使用object_list获取'
context_object_name = 'object_list'
#template_name='html页面所在目录'
template_name='caradmin/colortags/colortags.html'
#自定义查询方法
def get_queryset(self):
#获取url 中的值 比如http://127.0.0.1/admin/colortags/?name_text=红色
print(self.request.GET.dict())
return Model_Name.objects.filter(**self.request.GET.dict())
urls.py
from . import views
urlpatterns = [
path('colortags/', views.Colortag_view.as_view(), name = 'modelname_list'),
]
补充知识:Django分类查询和关键字查询以及查询后的分页
思路:分类和关键字查询分为以下几种情况:
1、只按照分类查询
2、值按照关键字查询
3、分类和关键字一起查询
第一种情况,值按照分类查询:
我们写了一个select下拉菜单来进行选择分类,当我们选中某一个分类时,则跳转到相应的分类的商品的展示页面。
<!-- 点击类别跳转到则展示相应的分类 -->
$("#p_type").change(function(){
var type = $(this).val()
location.href = '/backweb/good_list/?type='+type
})
通过原生js通过onchange给select的option标签绑定事件,jQ中使用change对select进行事件绑定,通过$(this)拿到当前点击的标签。
将获取到分类值做为?后的参数传入视图中,在视图中先将数据通过传递的分类进行筛选,再将筛选后的数据传递到页面进行渲染。
如果我们此时还做了分页展示,则将后端处理数据时的分类值也传到页面,在我们点击分页时跳转的地址?后将分类值作为参数再次传递回后端进行处理。
第二种情况,只按照关键字查询:
和分类查询类似,将文本输入标签(例如text类型的input)绑定事件,获取到输入的值,将获取的值作为地址?后的参入传递到后端。在后端通过地址后的参数将数据进行模糊(constatins)筛选,再将筛选后的商品和参数传递回前端,将数据在前端进行展示
当我们点击分页时,将查询值作为参数传递回后端。
第三种情况,同时按照分类和关键字进行查询:
此时我们需要在地址?后传递两个参数,一个是分类一个是关键字,然后在后端接收参数并进行筛选
<!-- 关键字查询 -->
function select_goods(){
var context=$('#context').val()
var type = $('.select').val()
if (context){
location.href = '/backweb/good_list/?type='+type+'&context='+context
}else{
location.href = '/backweb/good_list/?type='+type
}
}
分页跳转地址代码
<a href="{% url 'backweb:good_list' %}?type={{ type_id }}&context={{ context }}&page=1" rel="external nofollow" >第一页</a>
views代码
def good_list(request):
if request.method == 'GET':
page_num = int(request.GET.get('page', 1))
type = request.GET.get('type',0)
context = request.GET.get('context','')
# 如果拿不到分类则将type_id设置为0
if not type:
type_id = int(type)
else:
type_id = int(type)
# 所有的分类
type_list = FoodType.objects.all()
# 根据相应的分类查找相应的商品
# 如果type_id不为0则获取相应分类的商品
if not type_id:
goods = Goods.objects.all()
else:
goods = Goods.objects.filter(goods_type_id=type_id)
# 如果有搜索条件则按照搜索条件模糊查询
if context:
goods = Goods.objects.filter(goods_type_id=type_id,productname__contains=context)
if not goods:
goods = Goods.objects.filter(goods_type_id=type_id,productname__contains=context[-1])
来源:https://blog.csdn.net/weixin_38570967/article/details/81414128


猜你喜欢
- Array可以使用下标,Map和Set不能使用下标,ES6引入了iterable类型,Array,Map,Set都属于iterable类型,
- 归并排序思路:将数组不断二分,然后合并为有序数组C++实现:void mergeSort(T arr[], int left,int rig
- 5月20日,微软正式提供了Windows XP下可用的雅黑字体下载,雅黑字体是一款近乎完美的字体,解决了宋体小文字无法辩认的问
- 如下所示:# -*- coding: utf-8 -*-#简述:一个整数,它加上100和加上268后都是一个完全平方数#提问:请问该数是多少
- 今天突然有同事问起,如何在sqlserver中调试存储过程(我们公司使用的是sqlserver 2008 R2),猛地一看,和以前使用sql
- 今天一个域名查询系统出现故障,该系统是用的ASP调用XMLHTTP获取whois库的数据,具体错误如下: msxml3.dll 错
- 在oracle中有很多关于日期的函数,如:1、add_months()用于从一个日期值增加或减少一些月份date_value:=add_mo
- openpyxl是一个第三方库,可以处理xlsx格式的Excel文件。pip install openpyxl安装。读取Excel文件需要导
- 前言VScode是一个相当优秀的IDE,具备开源、跨平台、模块化、插件丰富、启动时间快、颜值高、可高度定制等等优秀的特质,不愧是微软爸爸的私
- 关于Variable和Tensor旧版本的Pytorch中,Variable是对Tensor的一个封装;在Pytorch大于v0.4的版本后
- 复制是将主数据库的DDL和DML操作通过二进制日志传到从库上,然后再从库重做,从而使得从库和主库保持数据的同步。MySQL可以从一台主库同时
- <title>无标题文档</title> <script language="javascript&
- 各位大哥: 在javascript中如何取整?比如: var
- 本文实例讲述了Python自定义主从分布式架构。分享给大家供大家参考,具体如下:环境:Win7 x64,Python 2.7,APSched
- 字符串索引示意图字符串切片也就是截取字符串,取子串Python中字符串切片方法字符串[开始索引:结束索引:步长]切取字符串为开始索引到结束索
- 以下的文章主要是介绍MySQL5创建存储过程的实例演示,MySQL5创建存储在实际操作中应用的频率还是很高的,以下就是MySQL5创建存储过
- array_unique() 定义和用法 array_unique() 函数移除数组中的重复的值,并返回结果数组。 当几个数组元素的值相等时
- 在做Django项目的过程中, 无法进入pycharm提供的Run manager.py Task交互环境出现这种问题是因为Pycharm无
- 本文是对《Python Qt GUI快速编程》的第9章的扩展对话框例子Find and replace用Python3+PyQt5+Qt D
- 一、下载软件1. 进入MySQL官网,登陆自己的Oracle账号(没有账号的自己注册一个),下载Mysql-5.7.17,下载地址:http