时间:2021-05-22
view.py
from django.views.generic import ListView,DetailViewfrom xxxx.models import Model_Nameclass 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 viewsurlpatterns = [ 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中的参数值方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
1URL路径参数在定义路由URL时,使用正则表达式提取参数的方法从URL中获取请求参数,Django会将提取的参数直接传递到视图的传入参数中。未命名参数按顺序传
水平的ListView-HorizontalListView的使用Android中ListView默认的是竖直方向的滑动,由于项目的需求,需要ListView是
在开发中,我们经常使用到ListView这个控件。Android的API也提供了许多创建ListView适配器的快捷方式。例如ArrayAdapter、Simp
Django中提供了一个关于URL的映射的解决方案,1.客户端的浏览器发起一个url请求,Django根据URL解析,把url中的参数捕获,调用相应的试图,获取
在主Activity中:listview=(ListView)findViewById(R.id.listview);getData();//为list添加数据