gpt4 book ai didi

python - (Django) 将 'context' (基本信息)传递到每个页面,甚至表单?

转载 作者:行者123 更新时间:2023-12-01 05:16:13 24 4
gpt4 key购买 nike

我对 Django 相当陌生(使用 1.6.2),我担心我可能会陷入不良实践,所以我必须问:

目前我正在处理一些简单的 View :主页、个人资料。对于这两个 View ,我检查用户是否使用 request.user 登录。如果该用户已登录,我会将他的信息传递到 context{} 并将其发送到模板。

那么,我基本上需要为每个想要包含该信息的 View 执行此操作吗?

#views.py 

def home(request):
....etc....
context = {
'players' : players,
'teams' : teams,
}

if request.user.is_authenticated():
p = Player.objects.get(user=request.user)
if p:
context['p'] = p
return render(request, 'home.html', context)

所以我基本上检查是否应该在发送之前将这些信息添加到上下文中(如果可用)。问题是,此信息实际上用作标题,应该出现在每个页面上。有没有一种方法可以让我将其包含在每个 View 中,而无需将其引入上下文?

提前非常感谢。 StackOverflow 的你们确实帮助了我们很多人入门!

最佳答案

你可以写一个 custom context processor :

def foo(request):
"""
Adds Player to context
"""

context = {'p': None}
if request.user.is_authenticated():
p = Player.objects.get(user=request.user)
if p:
context['p'] = p

return context

并将其添加到settings.py中的TEMPLATE_CONTEXT_PROCESSORS元组中(假设foo放置在应用程序文件夹中的context_processors.py模块中):

TEMPLATE_CONTEXT_PROCESSORS = (
# ...
"your_app_name.context_processors.foo",
)

关于python - (Django) 将 'context' (基本信息)传递到每个页面,甚至表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23184172/

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