2017-10-24 20 views
0

Ich bin ein Anfänger in Django, und seine Version ist 1.11.6, sowie die Python-Version, die ich verwende, ist 3.6. Ich studiere generische Ansicht, generic.ListView gibt keine Werte zurück.generische Ansicht gibt keine Werte zurück

views.py 


class IndexView(generic.ListView): 
    template_name = 'polls/index.html' 
    context_object_name = 'Latest_question_list' 
    def get_queryset(self): 
     return Question.objects.order_by('-pub_date')[:5] 


urls.py 

from django.conf.urls import url 

from . import views 

app_name = 'polls' 
urlpatterns = [ 
    url(r'^$', views.IndexView.as_view(), name='index'), 
    url(r'^(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='detail'), 
    url(r'^(?P<pk>[0-9]+)/results/$', views.ResultView.as_view(), name='results'), 
    url(r'^(?P<question_id>[0-9]+)/vote/$',views.vote, name='vote'), 
] 

die Ausgabe des obigen Codes ist:

keine Umfragen

die HTML-Seite den folgenden Code enthalten ist, verfügbar sind:

{% if latest_question_list %} 


    <ul> 
     {% for question in latest_question_list %} 
     <li><a href="{% url 'polls:detail' question.id %}/">{{ question.question_text }}</a></li> 
     {% endfor %} 
    </ul> 
{% else %} 
<p>no polls are available</p> 
{% endif %} 
{% load static %} 
<link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}"/> 

leider konnte ich bekomme den Grund des Fehlers nicht.

Antwort

3

Das Problem ist, dass Sie context_object_name = 'Latest_question_list' (mit einem großen L) in Ihrer Ansicht haben, die nicht {% if latest_question_list %} (alle Kleinbuchstaben) in Ihrer Vorlage entspricht.

Ändern Sie entweder die Ansicht oder die Vorlage so, dass sie übereinstimmen. Die PEP 8 style guide würde empfehlen latest_question_list, so würde ich die Ansicht ändern:

Verwandte Themen