gpt4 book ai didi

Django - 使用 context_processor

转载 作者:行者123 更新时间:2023-12-01 08:17:41 26 4
gpt4 key购买 nike

我想在网页的任何地方都放一个登录表单,所以我添加了一个 context_processor我将它包含在 base.html 文件中。现在的问题是我看不到表格。

这是我的 context_processors.py:

def global_login_form(request):
if request.method == 'POST':
formLogin = LoginForm(data=request.POST)
if formLogin.is_valid():
from django.contrib.auth import login
login(request, formLogin.get_user())
...
else:
formLogin = LoginForm()

return {'formLogin': formLogin}

以下是我在 base.html 中尝试调用表单的不同 html:
<form action="/myapp/login/" method="post">
{% csrf_token %}
{{global_login_form}}
</form>

<form action="/myapp/login/" method="post">
{% csrf_token %}
{{global_login_form.as_p}}
</form>

<form action="/myapp/login/" method="post">
{% csrf_token %}
{{request.formLogin}}
</form>

第一次加载页面时, context_process返回 {'formLogin': formLogin} (原因 formLoginLoginForm() )但我在检查 html 时看不到表单。它不存在...但我可以看到 csrf_token所以我认为我没有正确调用上下文。

只是大小写(可能顺序不正确),这里是settings.py:
TEMPLATE_CONTEXT_PROCESSORS = (
"myapp.context_processors.global_login_form",
"django.core.context_processors.request",
"django.contrib.auth.context_processors.auth",
)

有任何想法吗?

最佳答案

我相信 OP 错误地假设模板上下文变量将匹配上下文处理器的函数名称。

OP 的上下文处理器 global_login_form()注入(inject) formLogin到模板上下文。因此,在模板中,应将表单引用为,例如 {{ formLogin.as_p }} .

关于Django - 使用 context_processor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6491046/

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