通用视图不返回任何值

时间:2017-10-24 12:25:04

标签: python django django-generic-views

我是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' %}"/>

不幸的是,我无法理解错误。

1 个答案:

答案 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'