django ListView的使用 ListView中获取url中的参数值方式


Posted in Python onMarch 27, 2020

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])

以上这篇django ListView的使用 ListView中获取url中的参数值方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现的石头剪子布代码分享
Aug 22 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
Mar 02 Python
python将秒数转化为时间格式的实例
Sep 16 Python
python中的for循环
Sep 28 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
Apr 11 Python
python实现按行分割文件
Jul 22 Python
django基于cors解决跨域请求问题详解
Aug 06 Python
Python获取时间戳代码实例
Sep 24 Python
python列表推导和生成器表达式知识点总结
Jan 10 Python
Python找出列表中出现次数最多的元素三种方式
Feb 24 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
Jun 24 Python
PyQt QMainWindow的使用示例
Mar 24 Python
django列表筛选功能的实现代码
Mar 27 #Python
python实现猜数游戏
Mar 27 #Python
手把手教你安装Windows版本的Tensorflow
Mar 26 #Python
python pandas.DataFrame.loc函数使用详解
Mar 26 #Python
Python计算指定日期是今年的第几天(三种方法)
Mar 26 #Python
Python函数默认参数常见问题及解决方案
Mar 26 #Python
Python内建序列通用操作6种实现方法
Mar 26 #Python
You might like
使用php+Ajax实现唯一校验实现代码[简单应用]
2011/11/29 PHP
php查找指定目录下指定大小文件的方法
2014/11/28 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
2016/08/01 PHP
thinkphp5引入公共部分header、footer的方法详解
2018/09/14 PHP
超级强大的表单验证
2006/06/26 Javascript
jQuery登陆判断简单实现代码
2013/04/21 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
2013/11/13 Javascript
js验证电话号码与手机支持+86的正则表达式
2014/01/23 Javascript
js检测浏览器版本、核心、是否移动端示例
2014/04/24 Javascript
浅析javascript的return语句
2015/12/15 Javascript
js时间戳格式化成日期格式的多种方法介绍
2017/02/16 Javascript
JS实现两周内自动登录功能
2017/03/23 Javascript
小程序实现搜索界面 小程序实现推荐搜索列表效果
2019/05/18 Javascript
Vuex的各个模块封装的实现
2020/06/05 Javascript
[03:14]2014DOTA2西雅图国际邀请赛 EG战队巡礼
2014/07/07 DOTA
Python splitlines使用技巧
2008/09/06 Python
Python生成随机密码
2015/03/10 Python
Python常用的文件及文件路径、目录操作方法汇总介绍
2015/05/21 Python
Go语言基于Socket编写服务器端与客户端通信的实例
2016/02/19 Python
使用DataFrame删除行和列的实例讲解
2018/04/08 Python
对dataframe进行列相加,行相加的实例
2018/06/08 Python
Python列表切片常用操作实例解析
2020/03/10 Python
使用Keras实现简单线性回归模型操作
2020/06/12 Python
加拿大时尚少女服装品牌:Garage
2016/10/10 全球购物
全球酒店比价网:HotelsCombined
2017/06/20 全球购物
葡萄牙语专业个人求职信
2013/12/10 职场文书
毕业生大学生活自我总结
2014/01/31 职场文书
消防宣传口号
2014/06/16 职场文书
“向国旗敬礼”主题班会活动设计方案
2014/09/27 职场文书
2014年乡镇工会工作总结
2014/12/02 职场文书
投资合作意向书范本
2015/05/08 职场文书
孟佩杰观后感
2015/06/17 职场文书
使用PDF.js渲染canvas实现预览pdf的效果示例
2021/04/17 Javascript
pytorch 使用半精度模型部署的操作
2021/05/24 Python
浅谈Python numpy创建空数组的问题
2021/05/25 Python
Windows server 2016服务器基本设置
2022/08/14 Servers