django ListView的使用 ListView中获取url中的参数值方式

作者:parhats 时间:2022-06-17 10:41:57 

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])

来源:https://blog.csdn.net/weixin_38570967/article/details/81414128

标签:django,ListView,url,参数值
0
投稿

猜你喜欢

  • python3 拼接字符串的7种方法

    2021-12-24 09:09:32
  • 基于Python的XSS测试工具XSStrike使用方法

    2021-08-21 13:11:56
  • Python+Pygame实现简单的射击小游戏

    2023-06-01 11:50:30
  • Django如何实现网站注册用户邮箱验证功能

    2023-05-14 08:03:08
  • nodejs对项目下所有空文件夹创建gitkeep的方法

    2024-05-08 09:37:40
  • Python和Sublime整合过程图示

    2023-04-11 15:23:33
  • 详解Python odoo中嵌入html简单的分页功能

    2021-05-21 12:24:06
  • python中requests模拟登录的三种方式(携带cookie/session进行请求网站)

    2021-11-29 10:44:29
  • JS实现简单的二元方程计算器功能示例

    2024-05-02 17:39:30
  • 三分钟教会你用Python+OpenCV批量裁剪xml格式标注的图片

    2023-07-09 14:11:01
  • window系统mysql无法输入和无法显示中文的解决方法

    2024-01-20 05:13:29
  • python2 对excel表格操作完整示例

    2022-08-27 00:35:06
  • Python实现的多线程端口扫描工具分享

    2023-03-30 04:32:19
  • golang读取各种配置文件(ini、json、yaml)

    2024-05-09 14:51:49
  • 详解flask入门模板引擎

    2023-06-27 00:05:41
  • Python操作SQLite数据库过程解析

    2024-01-26 08:16:38
  • 如何利用Anaconda配置简单的Python环境

    2023-05-05 22:48:54
  • MySQL root账号远程新建数据库报错1044问题及解决方法

    2024-01-23 23:37:56
  • 基于PyQt5制作一个表情包下载器

    2022-02-23 13:30:58
  • CentOS 6/7环境下通过yum安装php7的方法

    2023-11-23 11:08:02
  • asp之家 网络编程 m.aspxhome.com