我有一个基页和一些带有视图的模板:
<!DOCTYPE html>
<head>
<title>{% block title %}title{% endblock %}</title>
</head>
<body>
<div id="userpanel">
user panel
</div>
<div id="content">
{% block content %}{% endblock %}
</div>
</body>
</html>
和
{% extends "base.html" %}
{% block title %}some title{% endblock %}
{% block content %}
some content
{% endblock %}
我想在基页上添加用户面板。我可以以某种方式使用像if / for那样的模板标签吗? 我希望能够使用类似的东西:
{% if user.admin}
admin panel
{% endif %}
{% if user.moderator}
moderator panel
{% endif %}
答案 0 :(得分:2)
上下文变量始终具有request.user(当前用户)。
所以你可以这样做: if request.user.is_superuser ... 和: 如果是request.user.is_staff ....
您可以在Admin.auth.user中分配两个变种。
关于制作作业标签的第二个问题,请参阅:here
# app/templatetags/mytags.py
@register.assignment_tag
def get_messages_list_for_user(user):
list = Messages.objects.filter(owner=user)
return list
然后在你去的模板中:
# base.html
{% load mytags %}
{% for m in get_messages_list_for_user request.user %}
{{ m.text }}
{% endfor %}
您始终拥有请求用户,因此您可以将其放在一个模板或基本模板中。