{% if latest_question_list %}
在index.html页面中,我按书中所述添加了代码。但是latest_question_list
被显示为无,我没有得到任何类似的显示。有人可以帮我解决这个问题吗?
编辑
index.html
{% if latest_question_list %}
<ul>
{% for question in latest_question_list %}
<li><a href="/polls/{{ question.id }}/">{{ question.question_text }}</a>
</li>
{% endfor %}
</ul>
{% else %}
<p>No polls are available.</p>
{% endif %}
views.py
from django.http import HttpResponse
from django.template import loader
from .models import Question
def index(request):
latest_question_list = Question.objects.order_by('-pub_date')[:5]
template = loader.get_template('polls/index.html')
context = {
'latest_question_list': latest_question_list,
}
return HttpResponse(template.render(context, request))
models.py
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
答案 0 :(得分:1)
签出您的模板路径,也许您正在将数据发送到错误的模板。如Django Tutorial所说:
首先,在民意调查目录中创建一个名为template的目录。 Django将在其中查找模板。
您项目的TEMPLATES设置描述了Django如何加载和呈现模板。默认设置文件配置DjangoTemplates后端,其APP_DIRS选项设置为True。按照惯例,DjangoTemplates在每个INSTALLED_APPS中寻找一个“模板”子目录。
在刚创建的模板目录中,创建另一个名为polls的目录,并在其中创建一个名为index.html的文件。换句话说,您的模板应位于polls / templates / polls / index.html。由于如上所述app_directories模板加载器的工作方式,您可以在Django中将此模板简称为polls / index.html。
您还可以在index
视图中打印列表,以确保latest_question_list
不为空。
修改
context
键名必须与在视图中创建的键名相同。