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使用百度翻译进行中翻英示例
Apr 14 Python
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
Jul 09 Python
Python中zip()函数用法实例教程
Jul 31 Python
仅用50行Python代码实现一个简单的代理服务器
Apr 08 Python
详解Python爬取并下载《电影天堂》3千多部电影
Apr 26 Python
如何使用Python实现自动化水军评论
Jun 26 Python
pandas 层次化索引的实现方法
Jul 06 Python
Django缓存系统实现过程解析
Aug 02 Python
python多线程实现TCP服务端
Sep 03 Python
使用Python进行防病毒免杀解析
Dec 13 Python
Python selenium模块实现定位过程解析
Jul 09 Python
python数据库批量插入数据的实现(executemany的使用)
Apr 30 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
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
2013/06/17 PHP
使用PHP如何实现高效安全的ftp服务器(一)
2015/12/20 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
2016/02/26 PHP
thinkPHP中volist标签用法示例
2016/12/06 PHP
php使用变量动态创建类的对象用法示例
2017/02/06 PHP
PHP中的正则表达式实例详解
2017/04/25 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
PHPstorm启用自动换行的方法详解(IDE)
2020/09/17 PHP
jQuery插件开发基础简单介绍
2013/01/07 Javascript
javascript替换已有元素replaceChild()使用介绍
2014/04/03 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
2016/01/25 Javascript
浅析jQuery 3.0中的Data
2016/06/14 Javascript
1秒50万字!js实现关键词匹配
2016/08/01 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
通过网页查看JS源码中汉字显示乱码的解决方法
2016/10/26 Javascript
基于jQuery实现的打字机效果
2017/01/16 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
vue 解决addRoutes动态添加路由后刷新失效问题
2018/07/02 Javascript
Vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换(推荐)
2019/05/08 Javascript
Swiper.js实现移动端元素左右滑动
2019/09/08 Javascript
vue 封装面包屑组件教程
2020/11/16 Javascript
angular *Ngif else用法详解
2020/12/15 Javascript
Python使用matplotlib绘制余弦的散点图示例
2018/03/14 Python
python读取csv文件并把文件放入一个list中的实例讲解
2018/04/27 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
2019/07/14 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
css3制作彩色边线3d立体按钮的示例(css3按钮)
2014/05/06 HTML / CSS
美国最大的珠宝商之一:Littman Jewelers
2016/11/13 全球购物
Nordgreen英国官网:斯堪的纳维亚设计师手表
2018/10/24 全球购物
学校安全工作汇报材料
2014/08/16 职场文书
家庭贫困证明书(3篇)
2014/09/15 职场文书
大学生违纪检讨书300字
2014/10/25 职场文书
安全检查汇报材料
2014/12/26 职场文书
大学生活感想
2015/08/10 职场文书
2016年春季运动会通讯稿
2015/11/25 职场文书
普希金诗歌赏析(6首)
2019/08/22 职场文书