变量
你在视图上下文中提供的变量可以使用双括号表示法访问:
在你的 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 可以是变量