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列表去重的二种方法
Feb 14 Python
Python如何判断数独是否合法
Sep 08 Python
python用reduce和map把字符串转为数字的方法
Dec 19 Python
scrapy爬虫完整实例
Jan 25 Python
python numpy元素的区间查找方法
Nov 14 Python
对python中基于tcp协议的通信(数据传输)实例讲解
Jul 22 Python
Django通用类视图实现忘记密码重置密码功能示例
Dec 17 Python
基于Python fminunc 的替代方法
Feb 29 Python
Python将字典转换为XML的方法
Aug 01 Python
python实现简单的五子棋游戏
Sep 01 Python
解决Python import .pyd 可能遇到路径的问题
Mar 04 Python
win10+anaconda安装yolov5的方法及问题解决方案
Apr 29 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面试题集锦
2012/03/08 PHP
php中使用addslashes函数报错问题的解决方法
2013/02/06 PHP
PHP链接MySQL的常用扩展函数
2014/10/23 PHP
详解php中反射的应用
2016/03/15 PHP
Yii2.0框架behaviors方法使用实例分析
2019/09/30 PHP
让广告代码不再影响你的网页加载速度
2006/07/07 Javascript
初探jquery——表单应用范例
2007/02/20 Javascript
Extjs4中的分页应用结合前后台
2013/12/13 Javascript
基于Jquery实现键盘按键监听
2014/05/11 Javascript
javascript表单验证和Window详解
2014/12/11 Javascript
webpack+vue.js实现组件化详解
2016/10/12 Javascript
浅谈jquery采用attr修改form表单enctype不起作用的问题
2016/11/25 Javascript
使用JavaScript判断用户输入的是否为正整数(两种方法)
2017/02/05 Javascript
微信小程序 基础知识css样式media标签
2017/02/15 Javascript
jquery 校验中国身份证号码实例详解
2017/04/11 jQuery
关于vue.extend和vue.component的区别浅析
2017/08/16 Javascript
vue下跨域设置的相关介绍
2017/08/26 Javascript
angular2 NgModel模块的具体使用方法
2019/04/10 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
如何检测JavaScript中的死循环示例详解
2020/08/30 Javascript
跟老齐学Python之坑爹的字符编码
2014/09/28 Python
对numpy数据写入文件的方法讲解
2018/07/09 Python
解决django model修改添加字段报错的问题
2019/11/18 Python
CSS3——齿轮转动关键代码
2013/05/02 HTML / CSS
香港个人化生活购物网站:Ballyhoo Limited
2016/09/10 全球购物
加拿大时尚少女服装品牌:Garage
2016/10/10 全球购物
医学生实习自我鉴定
2013/09/27 职场文书
生产文员岗位职责
2014/04/05 职场文书
社团活动总结范文
2014/04/26 职场文书
母亲节演讲稿
2014/05/27 职场文书
竞选大学学委演讲稿
2014/09/13 职场文书
党员干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
终止或解除劳动合同及劳动关系的证明书
2014/10/06 职场文书
2014年建筑工作总结
2014/11/26 职场文书
2015年采购员工作总结
2015/04/27 职场文书
如何写观后感
2015/06/19 职场文书