2015-09-07 1 views
2

Я использую представления, основанные на классе, в моем приложении, но я застрял в одной точке. Я использую ListView и создал два класса, которые являются подклассами ListView.Viewview Class based view не работает должным образом

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 не фильтрует. Я также добавил заявление печати, но не получил вызов.

Можно ли создать два класса с ListView в том же файле? Это проблема?

+1

Пожалуйста, показать файл urls.py. –

+0

У вас возникают ошибки при запуске? – electrometro

+0

Вам не нужно определять 'model = Blog' во втором? – dietbacon

ответ

3

Необходимо ввести URL-адрес вашего blog/. Без прерывания он соответствует всем URL-адресам, начинающимся с «blog /», включая «blog/search», поэтому запросы никогда не попадают в представление 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'),