我是django的初学者,它的版本是1.11.6
,我使用的python版本是3.6
。
我正在研究通用视图,generic.ListView
不会返回任何值。
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'),
]
上述代码的输出是:
没有民意调查
html页面包含以下代码:
{% 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' %}"/>
不幸的是,我无法理解错误。
答案 0 :(得分:3)
问题是您的视图中有context_object_name = 'Latest_question_list'
(带有大写字母L),与模板中的{% if latest_question_list %}
(全部小写)不匹配。
更改视图或模板以使其匹配。 PEP 8风格指南会推荐latest_question_list
,所以我会更改视图:
class IndexView(generic.ListView):
template_name = 'polls/index.html'
context_object_name = 'latest_question_list'