我想在我的网页中随处放置一个登录表单,所以我添加了一个context_processor
,并将其包含在base.html文件中。现在的问题是我看不到表格。Django - 使用context_processor
这里是我的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}
这里是diferents HTMLS我base.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}
(原因formLogin
是LoginForm()
)但我在检查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",
)
任何想法?
当你说“无处不在我的网页上”,你实际上意味着“无处不在我的网站”,如你要处处可见,以便用户可以登录每个页面上的登录表单? –
准确,对不起,我的英语 – juankysmith
你能张贴,处理后的看法? 如果我理解正确这个问题,问题是,模板没有POST上下文,所以你不能预先填入失败的形式? –