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 相关文章推荐
Python2.x和3.x下maketrans与translate函数使用上的不同
Apr 13 Python
python微信跳一跳系列之棋子定位颜色识别
Feb 26 Python
Python向Excel中插入图片的简单实现方法
Apr 24 Python
从请求到响应过程中django都做了哪些处理
Aug 01 Python
python中map的基本用法示例
Sep 10 Python
PyCharm鼠标右键不显示Run unittest的解决方法
Nov 30 Python
Python3对称加密算法AES、DES3实例详解
Dec 06 Python
在SQLite-Python中实现返回、查询中文字段的方法
Jul 17 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
Aug 02 Python
详解pycharm连接远程linux服务器的虚拟环境的方法
Nov 13 Python
详解python中的异常捕获
Dec 15 Python
如何用Python和JS实现的Web SSH工具
Feb 23 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
CI(CodeIgniter)模型用法实例分析
2016/01/20 PHP
PHP中的浅复制与深复制的实例详解
2017/10/26 PHP
JAVASCRIPT keycode总结
2009/02/04 Javascript
JQuery 图片延迟加载并等比缩放插件
2009/11/09 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
2013/01/08 Javascript
JavaScript模块随意拖动示例代码
2014/05/27 Javascript
JS生成随机字符串的多种方法
2014/06/10 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
2016/05/10 Javascript
图解prototype、proto和constructor的三角关系
2016/07/31 Javascript
javascript深拷贝(deepClone)详解
2016/08/24 Javascript
jQuery表单对象属性过滤选择器实例详解
2016/09/13 Javascript
jQuery、layer实现弹出层的打开、关闭功能
2017/06/28 jQuery
BackBone及其实例探究_动力节点Java学院整理
2017/07/14 Javascript
Angular Renderer (渲染器)的具体使用
2018/05/03 Javascript
vue-router 手势滑动触发返回功能
2018/09/30 Javascript
JavaScript写个贪吃蛇小游戏(超详细)
2020/03/17 Javascript
[01:43]3.19DOTA2发布会 三代刀塔人第三代
2014/03/25 DOTA
python访问类中docstring注释的实现方法
2015/05/04 Python
Python中对元组和列表按条件进行排序的方法示例
2015/11/10 Python
python3编码问题汇总
2016/09/06 Python
python 生成器生成杨辉三角的方法(必看)
2017/04/10 Python
Python实战小程序利用matplotlib模块画图代码分享
2017/12/09 Python
Python发送http请求解析返回json的实例
2018/03/26 Python
解决python线程卡死的问题
2019/02/18 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
css3 自定义字体font-face使用介绍
2014/05/14 HTML / CSS
英国标志性奢侈品牌:Burberry
2016/07/28 全球购物
进口业务员岗位职责
2014/04/06 职场文书
外联部演讲稿
2014/05/24 职场文书
保护环境的标语
2014/06/09 职场文书
商品陈列协议书
2014/09/29 职场文书
运动会加油稿
2015/07/22 职场文书
浅谈MySQL表空间回收的正确姿势
2021/10/05 MySQL
笔记本自带的win11如何跳过联网激活?
2022/04/20 数码科技
python数据分析之单因素分析线性拟合及地理编码
2022/06/25 Python