2017-12-06 3 views
-2

Meine Frage: Warum kann ich nur das Buch von Ayan Rand mit klassenbasierter Listenansicht suchen?Warum kann ich nicht mit klassenbasierten (Listenansicht) anzeigen, aber für funktionsbasierte Ansicht funktioniert es gut?

dies ist meine funktionsbasierte Ansicht für Shop-Liste, und ich bin alle meine Bücher Objekte und Rendern in HTML abrufen und es funktioniert gut.

Aber mit classbasedview "SearchBookDetail" bin ich nicht in der Lage, die angegebenen Buchdetails wie angegeben zu erhalten.

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

Sie haben uns keine Ahnung gegeben, was falsch ist. Was passiert und wie unterscheidet sich das von dem, was Sie erwarten? –

+0

Ich kann alle Buchobjekte mit diesem "http://127.0.0.1:8000/store/" anzeigen, aber während ich "http://127.0.0.1:8000/store/SearchBookDetail/" verwende, kann ich nicht um alles zu sehen. während ich keine Daten sehen kann –

+0

Und was enthält die Vorlage? –

Antwort

1

Listview seine Daten an die Vorlage als object_list sendet, nicht objects_list.

+0

Es funktioniert !! Danke! Daniel Roseman –

Verwandte Themen