首页Django正文

视频课程第九课第一节

提问未结 2 43
heroyf
heroyfDjango实战会员2019年2月7日 01:30
https://heroyf.club

5大,我按照课程第九章第一课14:48秒的步骤,完成了

class IndexView(BasePostView):
    def get_queryset(self):
        query = self.request.GET.get('query')
        qs = super(IndexView, self).get_queryset()
        if not query:
            return qs

        return qs.filter(title__icontains=query)  # select * from blog_post where title ilike '%query%'

    def get_context_data(self, **kwargs):
        query = self.request.GET.get('query')

        return super(IndexView,self).get_context_data(query=query)

同时前端也完成了分页加上query请求字段的逻辑

{% if page_obj.has_next %}
            {% if query %}
                <a href="?page={{ page_obj.next_page_number }}&query={{ query }}">下一页</a>
            {% else %}
                <a href="?page={{ page_obj.next_page_number }}">下一页</a>
            {% endif %}
        {% endif %}

但是我发现query字段并没有传过去,在view.py中加入pdb测试

    def get_context_data(self, **kwargs):
        query = self.request.GET.get('query')
        import pdb;pdb.set_trace()
        qs = super(IndexView,self).get_context_data(query=query)
        return super(IndexView,self).get_context_data(query=query)

我的查询字段是l,生成结果如下,posts处符合有l文章的预期结果

(Pdb) qs
{u'paginator': <django.core.paginator.Paginator object at 0x000000000487BF28>, u'object_list': <QuerySet [<Post: Hello World>, <Post: Linux教程>, <Post: linux>]>, u'posts': <QuerySet [<Post: Hello World>, <Post: Linux教程>, <Post: linux>]>, u'recent_comments': <QuerySet [<Comment: Comment object>, <Comment: Comment object>, <Comment: Comment object>, <Comment: Comment object>]>, u'side_bars': <QuerySet [<SideBar: SideBar object>, <SideBar: SideBar object>, <SideBar: SideBar object>]>, u'page_obj': <Page 1 of 2>, u'cates': [<Category: 日常>], u'recent_posts': <QuerySet [<Post: Hello World>, <Post: Linux教程>, <Post: 3>, <Post: 4>, <Post: 5>, <Post: 6>, <Post: 7>, <Post: 8>, <Post: 9>, <Post: linux>]>, u'view': <blog.views.IndexView object at 0x0000000004770198>, u'is_paginated': True, u'nav_cates': [<Category: Django>, <Category: Linux>]}

我觉得应该是拿到了,想问下为啥这里query返回给前端后,我测试下来是不存在的,如图所示,想问下5大问题出在哪里了,想了好久。 https://cdn.heroyf.club/img/django_problem/%E9%97%AE%E9%A2%98%E6%88%AA%E5%9B%BE.png

回帖
  • heroyf
    heroyf(楼主)
    2019年2月7日 12:32

    找到问题所在,结贴!

  • the5fire
    2019年2月8日 21:37

    {[good]}