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 多线程应用介绍
Dec 19 Python
讲解Python中的标识运算符
May 14 Python
深入浅析python继承问题
May 29 Python
Python语言生成水仙花数代码示例
Dec 18 Python
wxPython的安装图文教程(Windows)
Dec 28 Python
100行Python代码实现自动抢火车票(附源码)
Jan 11 Python
利用python GDAL库读写geotiff格式的遥感影像方法
Nov 29 Python
利用ctypes获取numpy数组的指针方法
Feb 12 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
Feb 21 Python
Keras-多输入多输出实例(多任务)
Jun 22 Python
python中的错误如何查看
Jul 08 Python
python实现自动清理重复文件
Aug 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中使用crypt()实现用户身份验证的代码
2012/09/05 PHP
ThinkPHP下表单令牌错误与解决方法分析
2017/05/20 PHP
通过PHP实现获取访问用户IP
2020/05/09 PHP
nodejs中使用多线程编程的方法实例
2015/03/24 NodeJs
JQuery实现样式设置、追加、移除与切换的方法
2015/06/11 Javascript
浅谈jQuery的offset()方法及示例分享
2015/07/17 Javascript
JavaScript数组对象赋值用法实例
2015/08/04 Javascript
详解javascript实现瀑布流列式布局
2016/01/29 Javascript
JS类的定义与使用方法深入探索
2016/11/26 Javascript
Bootstrap基本插件学习笔记之Tooltip提示工具(18)
2016/12/08 Javascript
微信小程序 自定义对话框实例详解
2017/01/20 Javascript
纯js模仿windows系统日历
2017/02/04 Javascript
原生JS实现不断变化的标签
2017/05/22 Javascript
React组件重构之嵌套+继承及高阶组件详解
2018/07/19 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
JS Ajax请求会话过期处理问题解决方法分析
2019/11/16 Javascript
node使用request请求的方法
2019/12/20 Javascript
npm ci命令的基本使用方法
2020/09/20 Javascript
Python调用C# Com dll组件实战教程
2017/10/12 Python
ubuntu安装mysql pycharm sublime
2018/02/20 Python
实践Vim配置python开发环境
2018/07/02 Python
解决Django Static内容不能加载显示的问题
2019/07/28 Python
Pycharm 安装 idea VIM插件的图文教程详解
2020/02/21 Python
django实现后台显示媒体文件
2020/04/07 Python
Python并发爬虫常用实现方法解析
2020/11/19 Python
HTML5利用约束验证API来检查表单的输入数据的代码实例
2016/12/20 HTML / CSS
澳大利亚在线百货商店:Real Smart
2017/08/13 全球购物
美国在线纱线商店:Darn Good Yarn
2019/03/20 全球购物
教育孩子心得体会
2014/01/01 职场文书
初一英语教学反思
2014/01/11 职场文书
户外拓展活动方案
2014/02/11 职场文书
公司晚会主持词
2014/03/22 职场文书
安全责任书怎么写
2014/07/28 职场文书
小学老师对学生的评语
2014/12/29 职场文书
2016春季田径运动会广播稿
2015/12/21 职场文书
《时代广场的蟋蟀》读后感:真挚友情,温暖世界!
2020/01/08 职场文书