我有一个导航栏,当用户没有登录时,它会显示“login”和“register”。当用户登录时,导航栏将显示用户的姓名和收件箱中的邮件数。你知道吗
问题是导航页面大约有50个页面,因此大约有50个视图函数必须获取用户信息并将其发送到模板。如果我以后想改变这个,那会很痛苦的!你知道吗
例如,下面是一个示例视图:
def index(request):
user = request.user
...
return render_to_response("page.html", {'user': user})
每次我都必须用导航栏将用户的信息发送到任何页面,因为我的导航栏包含以下代码:
{% if user %}
...
{% else %}
....
{% endif %}
有没有更干净的方法?你知道吗
编辑:另外,我有一个UserProfile模型,我想把它发送到模板。也有办法吗?你知道吗
最简单的方法是将
django.contrib.auth.context_processors.auth
包含到TEMPLATE_CONTEXT_PROCESSORS
配置中。如前所述in the docs它将在模板上下文中添加一个user
和perms
变量,使您可以直接访问当前用户。你知道吗并不是说
TEMPLATE_CONTEXT_PROCESSORS
的默认配置是这样的(在Django 1.3中):因此,上下文处理器应该已经处于活动状态,并且您应该能够访问模板中的
user
变量,而不必在视图中返回它。你知道吗在视图中,您只需使用^{} 快捷方式即可创建所需的RequestContext实例:
你需要一个custom template tag。你知道吗
您可以按照DrTyrsa的建议创建一个自定义模板标记,也可以创建context processor。你知道吗
相关问题 更多 >
编程相关推荐