Перемещение ошибки аутентификации в форме django crispy
Я создал страницу входа в систему, используя систему аутентификации django.
Ошибки валидации отображаются хорошо, но я не знаю, как управлять расположением сообщений об ошибках в макете LoginForm.
Я прикрепил, куда нужно переместить мое сообщение
forms.py
class LoginForm(AuthenticationForm):
remember_me = forms.BooleanField(required=None)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_id = "id-authenticationForm"
self.helper.form_class = "form-signin"
self.helper.form_method = "post"
self.helper.form_action = "login"
self.helper.layout = Layout(
HTML("""{% load static %}<img class="mb-4" src="{% static 'images/logo.jpg' %}" >
<h1 class="h3 mb-3 fw-normal">Please sign in</h1>"""),
FloatingField("username", "password"),
Div(
Div(
Div("remember_me", css_class="checkbox mb-3"),css_class="col"),
Div(HTML("<p><a href='{% url 'password_reset' %}'>Lost password?</a></p>"),css_class="col"),
css_class="row"
),
Submit('submit', 'Sign in', css_class="w-100 btn btn-lg btn-primary"),
HTML("""<p class="mt-5 mb-3 text-muted">© 2022 all rights deserved</p>""")
)
login.html.py
{% extends "blog/base.html" %}{% load crispy_forms_tags %}
{% block content %}
{% crispy form %}
{% endblock %}
views.py
def custom_login(request, user, backend=None):
"""
modificated generic.auth login.
Send signal with extra parameter: previous [session_key]
"""
# get previous seesion_key for signal
prev_session_key = request.session.session_key
#send extra argument prev_session_key
user_logged_in.send(sender=user.__class__, request=request, user=user, prev_session_key=prev_session_key)
class CustomLoginView(LoginView):
form_class = LoginForm
def form_valid(self, form):
super().form_valid(form)
"""Security check complete. Log the user in."""
#changed default login
custom_login(self.request, form.get_user())
#get remember me data from cleaned_data of form
remember_me = form.cleaned_data['remember_me']
if not remember_me:
self.request.session.set_expiry(0) # if remember me is
self.request.session.modified = True
return HttpResponseRedirect(self.get_success_url())