變數
你在檢視上下文中提供的變數可以使用雙括號表示法訪問:
在你的 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 可以是變數