Ответ 1
security/login_user.html
- это полный шаблон страницы для формы входа. Это не то, что вы хотели бы встроить на каждую страницу, потому что он имеет дело с другими вещами, такими как просветленные сообщения, ошибки и макет.
Напишите свой собственный шаблон, чтобы отобразить только форму и включить это, или добавить его в базовый шаблон.
<form action="{{ url_for_security('login') }}" method="POST">
{{ login_user_form.hidden_tag() }}
{{ login_user_form.email(placeholder='Email') }}
{{ login_user_form.password(placeholder='Password') }}
{{ login_user_form.remember.label }} {{ login_user_form.remember }}
{{ login_user_form.submit }}
</form>
(Это просто пример, вы хотите, чтобы его стиль соответствовал вашей странице.)
Ни одно из ваших представлений напрямую не касается формы входа в систему, поэтому login_form
и url_for_security
недоступны при рендеринге большинства шаблонов (это вызывало первоначальную проблему, которую вы наблюдали). Внесите их для каждого запроса с помощью app.context_processor
.
from flask_security import LoginForm, url_for_security
@app.context_processor
def login_context():
return {
'url_for_security': url_for_security,
'login_user_form': LoginForm(),
}