基于Listview类的视图无法正常工作

时间:2015-09-07 15:34:00

标签: python django django-class-based-views

我在我的应用程序中使用基于类的视图,但我一度陷入困境。我正在使用ListView并创建了两个类,它们是ListView的子类。

views.py

class blog_home(ListView):
    paginate_by = 3
    model= Blog
    context_object_name = 'blog_title'
    template_name = 'blog.html'

class blog_search(ListView):
    paginate_by = 4

    context_object_name = 'blog_search'
    template = 'blog_search.html'

    def get_queryset(self):
        self.search_result = Blog.objects.filter(title__contains = 'Static')
        return self.search_result

urls.py

urlpatterns = [
url(r'^$', index, name='index'),
url(r'^grappelli/', include('grappelli.urls')),
url(r'^blog/', blog_home.as_view(), name='blog_home'),
url(r'^admin/', include(admin.site.urls)),
url(r'^blog/search/',blog_search.as_view(),name='blog_search'),
]

blog_Search()中的上述代码中,get_queryset()方法未被调用。我的意思是它没有用。如果我在blog_home中使用相同的方法,它确实有效。

blog_search没有过滤。我也添加了print语句,但没有被调用。

我可以在同一个文件中创建两个ListView的类吗?这是问题吗?

1 个答案:

答案 0 :(得分:3)

您需要终止blog/网址条目。如果没有终止,它会匹配以" blog /"开头的所有网址,包括"博客/搜索",因此没有请求进入blog_search视图。

url(r'^blog/$', blog_home.as_view(), name='blog_home'),
url(r'^admin/', include(admin.site.urls)),
url(r'^blog/search/$',blog_search.as_view(),name='blog_search'),