为什么我无法使用基于类的视图(列表视图)查看,但对于基于功能的视图,它工作正常?

时间:2017-12-06 16:08:20

标签: django django-templates django-views

我的问题:为什么我无法仅使用基于类的列表视图查看搜索ayan rand的书?

这是我基于函数的商店列表视图,我正在检索所有书籍对象并使用HTML进行渲染,并且工作正常。

但是使用classbasedview“SearchBookDetail”我无法获得指定的书籍细节。

Views.py:

from django.shortcuts import render, get_object_or_404
from django.http import  HttpResponse,HttpResponseRedirect
from django.views.generic import TemplateView,ListView,DetailView

def store_listView(request,):
      queryset=Book.objects.all()

      context={
           "objects_list":queryset
      }
      return render(request,'bookstores/store.html',context)

class SearchBookDetail(ListView):
    template_name = "bookstores/store.html"
    queryset = Book.objects.filter(author__icontains='Ayan Rand')
    print("Ayan Rand query set", queryset)

Urls.py:

 from django.conf.urls import url
 from django.contrib import admin
 from django.views.generic import TemplateView
 from store.views import (Home,ContactView,LoginView,
                     store_listView,
                     SearchBookDetail,
                     book_createview,
                     QuoteslistView,
                    AyanRandBookDetail,
                     quotesFunctionView)

 urlpatterns = [
   url(r'^admin/', admin.site.urls),
   url(r'^$',Home.as_view()),
   url(r'^contact/$',ContactView.as_view()),
   url(r'^login/$',LoginView.as_view()),
   url(r'^store/$',store_listView),
   url(r'^store/AyanRandBookDetail/$',AyanRandBookDetail.as_view()),
   url(r'^store/SearchBookDetail/$',SearchBookDetail.as_view()),
   url(r'^quotes/$',quotesFunctionView)]

store.html:

 {% extends "home.html" %}
 {% block head_title %}Store || {{ block.super }} {% endblock head_title %}
 {% block content %}
 <head>
   <meta charset="UTF-8">
   <title>Store</title>
 </head>

 <h6>Books available</h6>
 <ul>
   {% for obj in objects_list %}
   <li>{{obj}}<br>
    {{obj.book_image}} <br>
    {{obj.description}} <br>
    {{obj.author}}<br>
    {{obj.genre}}<br>
    {{obj.price}}<br>
    </li>

   {% endfor %}
</ul>


{% endblock content %}

1 个答案:

答案 0 :(得分:1)

ListView将其数据作为object_list发送到模板,而不是objects_list