django教程中的{%something%}语法

时间:2013-12-30 02:44:20

标签: python django

在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 %}

有人可以解释{%某些%}语法应该有效吗?谢谢你的帮助!

1 个答案:

答案 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 }}等将被查询中的实际数据替换。

这或多或少是这类设计的“核心”。我们的想法是尽可能地分离逻辑和标记。您应该在视图中包含所有代码,并且只需要模板文件中的纯标记和模板标记。它提供了一个更清洁的环境,使维护更容易。