gpt4 book ai didi

python - 包括多个 View 的用户统计信息

转载 作者:太空狗 更新时间:2023-10-30 03:06:20 25 4
gpt4 key购买 nike

我有一个导航栏,当用户未登录时显示“登录”和“注册”。当用户登录时,导航栏将显示用户名和收件箱中的邮件数.

问题是导航页面出现在大约 50 个页面上,因此有大约 50 个 View 函数必须获取用户信息并将其发送到模板。如果我以后想改变这个,那将是一件痛苦的事情!

例如,这是一个示例 View :

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 包含到 settings.py 中的 TEMPLATE_CONTEXT_PROCESSORS 配置中。如所述in the docs它将在您的模板上下文中添加一个 userperms 变量,使您可以直接访问当前用户。

并不是 TEMPLATE_CONTEXT_PROCESSORS 的默认配置是这样的(在 Django 1.3 中):

("django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.contrib.messages.context_processors.messages")

因此上下文处理器应该已经处于事件状态,并且您应该能够访问模板中的 user 变量而无需在 View 中返回它。

在您的 View 中,您可以简单地使用 render将负责创建所需的 RequestContext 实例的快捷方式:

from django.shortcuts import render

def my_view(request):
return render(request, 'template.html' )

关于python - 包括多个 View 的用户统计信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8666161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com