栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Django ListView自定义查询集

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django ListView自定义查询集

为了解决这个问题,我刚刚修改了分页HTML,以容纳来自表单的get请求和url字符串中的页码,如下所示:

<div >    <span >        {% if page_obj.has_previous %} <a href="/browse/?browse={{ input }}&page={{ page_obj.previous_page_number }}">previous</a>        {% endif %}        <span > Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.        </span>        {% if page_obj.has_next %} <a href="/browse/?browse={{ input }}&page={{ page_obj.next_page_number }}">next</a>        {% endif %}    </span></div>

这里的{{input}}是一个字符串,其中包含通过表单提交的选项,例如“ Cats”或“ Worms”。

为了能够将其传递到模板中,我对基于类的视图的get_context_data方法进行了如下修改:

class Browse(generic.ListView):    template_name = 'app/browse.html'    paginate_by = 25    # Modifying the get_context_data method    def get_context_data(self, **kwargs):        context = super(Browse, self).get_context_data(**kwargs)        q = self.request.GET.get("browse")        context['input'] = q        return context    def get_queryset(self):        queryset = Cats.objects.all()        if self.request.GET.get("browse"): selection = self.request.GET.get("browse") if selection == "Cats":     queryset = Cats.objects.all() elif selection == "Dogs":     queryset = Dogs.objects.all() elif selection == "Worms":     queryset = Worms.objects.all() else:     queryset = Cats.objects.all()        return queryset

就是这样,URL字符串现在显示为:

/browse/?browse=Cats&page=3

这样就可以了,分页现在可以与表单的get方法一起使用。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/667988.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号