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的加密模块md5、sha、crypt使用实例
Sep 28 Python
编写Python脚本来获取Google搜索结果的示例
May 04 Python
改进Django中的表单的简单方法
Jul 17 Python
总结python中pass的作用
Feb 27 Python
Python实现EXCEL表格的排序功能示例
Jun 25 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
Jul 07 Python
python3的print()函数的用法图文讲解
Jul 16 Python
python数值基础知识浅析
Nov 19 Python
Pytorch Tensor的统计属性实例讲解
Dec 30 Python
Python netmiko模块的使用
Feb 14 Python
Java ExcutorService优雅关闭方式解析
May 30 Python
Python中time与datetime模块使用方法详解
Mar 31 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
global.php
2006/12/09 PHP
PHP mkdir()定义和用法
2009/01/14 PHP
php实现smarty模板无限极分类的方法
2015/12/07 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
PHP使用Redis替代文件存储Session的方法
2017/02/15 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2019/12/04 PHP
关于document.cookie的使用javascript
2010/10/29 Javascript
解析javascript 实用函数的使用详解
2013/05/10 Javascript
jQuery 中国省市两级联动选择附图
2014/05/14 Javascript
jQuery实现类似标签风格的导航菜单效果代码
2015/08/25 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
浅析Ajax语法
2016/12/05 Javascript
javascript实现简单的可随机变色网页计算器示例
2016/12/30 Javascript
微信小程序左滑删除效果的实现代码
2017/02/20 Javascript
JS原生数据双向绑定实现代码
2017/08/14 Javascript
Angular 4.0学习教程之架构详解
2017/09/12 Javascript
详解Node.js模板引擎Jade入门
2018/01/19 Javascript
[01:07:19]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第一场
2018/04/06 DOTA
[02:11]完美世界DOTA2联赛10月28日赛事精彩集锦:来吧展示实力强劲
2020/10/29 DOTA
python正常时间和unix时间戳相互转换的方法
2015/04/23 Python
Python实现简单登录验证
2016/04/13 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
2019/09/28 Python
Django如何使用jwt获取用户信息
2020/04/21 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
2020/05/16 Python
python如何写出表白程序
2020/06/01 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
2020/06/15 Python
python生成xml时规定dtd实例方法
2020/09/21 Python
加拿大最大的箱包及旅游配件零售商:Bentley Leathers
2017/07/19 全球购物
美国酒店控股公司:Choice Hotels
2018/06/15 全球购物
广告学专业应届生求职信
2013/10/01 职场文书
播音主持女孩的自我评价分享
2013/11/20 职场文书
高中自我评价分享
2013/12/05 职场文书
超市国庆节促销方案
2014/02/20 职场文书
元旦联欢会策划方案
2014/06/11 职场文书
2015年安全月活动总结
2015/03/26 职场文书
2015年工商局个人工作总结
2015/07/23 职场文书