Я хочу разместить форму входа везде на моей веб-странице, поэтому я добавил 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}
И вот отличия 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",
)
Есть идеи?