變數

你在檢視上下文中提供的變數可以使用雙括號表示法訪問:

在你的 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 可以是變數