在Django教程(第3部分)中,它们具有以下语法模板:
{% if latest_poll_list %}
<ul>
{% for poll in latest_poll_list %}
<li><a href="/polls/{{ poll.id }}/">{{ poll.question }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>No polls are available.</p>
{% endif %}
有人可以解释{%某些%}语法应该有效吗?谢谢你的帮助!
答案 0 :(得分:3)
它们是模板标签。在实际Python代码的相关部分中,本教程执行此操作:
from django.http import HttpResponse
from django.template import RequestContext, loader
from polls.models import Question
def index(request):
latest_question_list = Question.objects.order_by('-pub_date')[:5]
template = loader.get_template('polls/index.html')
context = RequestContext(request, {
'latest_question_list': latest_question_list,
})
return HttpResponse(template.render(context))
这是观点。在此视图中,他们使用数据库中的五个最新问题填充latest_question_list
。然后告诉视图使用这些值渲染输出。
视图然后加载模板(您发布的代码)并用相应对象的实际数据替换标记/占位符。
模板标签应该是可自我解释的。第一行检查是否有任何问题。如果是,则循环它们,然后{{ poll.id }}
等将被查询中的实际数据替换。
这或多或少是这类设计的“核心”。我们的想法是尽可能地分离逻辑和标记。您应该在视图中包含所有代码,并且只需要模板文件中的纯标记和模板标记。它提供了一个更清洁的环境,使维护更容易。