变量

你在视图上下文中提供的变量可以使用双括号表示法访问:

在你的 views.py

class UserView(TemplateView):
  """ Supply the request user object to the template """

  template_name = "user.html"

  def get_context_data(self, **kwargs):
    context = super(UserView, self).get_context_data(**kwargs)
    context.update(user=self.request.user)
    return context

user.html

<h1>{{ user.username }}</h1>

<div class="email">{{ user.email }}</div>

点符号将访问:

  • 对象的属性,例如 user.username 将是 {{ user.username }}
  • 字典查找,例如 request.GET["search"] 将是 {{ request.GET.search }}
  • 没有参数的方法,例如 users.count() 将是 {{ user.count }}

模板变量无法访问带参数的方法。

变量也可以测试和循环:

{% if user.is_authenticated %}
  {% for item in menu %}
    <li><a href="{{ item.url }}">{{ item.name }}</a></li>
  {% endfor %}
{% else %}
  <li><a href="{% url 'login' %}">Login</a>
{% endif %}

使用 {% url 'name' %} 格式访问 URL,其中名称对应于 urls.py 中的名称。

{% url 'login' %} - 可能会渲染为/accounts/login/
{% url 'user_profile' user.id %} - URL 的参数按顺序提供
14 - URL 可以是变量