Django пользовательская валидация формы входа в систему с помощью AJAX

Я не так опытен в написании Python/Back-end, но пытаюсь совершенствоваться. В разработке/локальном сервере я пытаюсь проверить email и пароль пользователя в форме входа... сейчас почти 100% вещей работают, например, предупреждающие сообщения для обязательных входов; однако, из Utils. py файла if user "elif not object_user.allow_private_access:" валидация не работает и, что самое главное, валидация не проверяет пароль пользователя (также закомментировано в Utils.py). Часть "post" в Views.py, возможно, придется обновить.

Я включил свою пользовательскую форму Login из Forms.py, Views.py (для страницы Login) и Utils.py (который делает валидацию и посылает сообщения об ошибках на front-end) и Urls.py. Я не стал добавлять свой AJAX, потому что он и так хорошо работает.

Forms.py

class UserLoginForm(forms.ModelForm):
    helper = FormHelper()
    helper.add_input(Submit('login_form_submit',
                            numeratio_static_textLanguage['global_input_alert_maxCharacters_32'],
                            css_class='global_component-button'))

    class Meta:
        model = CustomUser
        fields = ['email', 'password']
        widgets = { 'email': forms.EmailInput(attrs={
                    'maxlength': '256',
                    'style': 'text-transform: lowercase',
                    'id': 'input-email',
                    'class': 'global_component-input box'}
                    ),
                    'password': forms.PasswordInput(attrs={
                    'type': 'password',
                    'maxlength': '128',
                    'id': 'input-password',
                    'class': 'global_component-input box'}
                    )
        }

    def __init__(self, *args, **kwargs):
        super(UserLoginForm, self).__init__(*args, **kwargs)
        self.helper.form_action = ''
        self.helper.form_method = 'post'
        self.helper.form_id = 'login_form'
        self.helper.form_class = 'login_form'

Views.py

Utils.py

def validation_userLogin_form(bound_user_login_form):
    if bound_user_login_form.is_valid():
        return {'result': True}
    else:
        error_messages = {}
        if bound_user_login_form.errors:
            error_messages.update(bound_user_login_form.errors)
        return {'result': False, 'error_messages': error_messages}


def validate_field_userLogin(post_request):
    error_messages = []
    response = {'is_valid_field': False}
    if 'email' in post_request:
        validate_login_email(post_request, error_messages)
    elif 'password' in post_request:
        validate_login_password(post_request, error_messages)
    if len(error_messages) < 1:
        response['is_valid_field'] = True
    else:
        response['error_messages'] = error_messages
    return response


def validate_login_email(post_request, error_messages):
    entered_email = post_request['email'].lower()
    try:
        object_user = get_user_model().objects.get(email__iexact=entered_email)
        print(object_user)
        if entered_email == '':
            error_messages.append(numeratio_static_textLanguage['global_input_alert_mandatoryField'])
        elif not object_user.allow_private_access:
            error_messages.append(numeratio_static_textLanguage['global_input_alert_noAccess'])
    except NumeratioUser.DoesNotExist:
        if entered_email == '':
            error_messages.append(numeratio_static_textLanguage['global_input_alert_mandatoryField'])
        elif not is_valid_format_email(entered_email):
                error_messages.append(numeratio_static_textLanguage['global_input_alert_emailIncorrect'])
        elif len(entered_email) > 256:
            error_messages.append(numeratio_static_textLanguage['global_input_alert_maxCharacters_256'])


def validate_login_password(post_request, error_messages):
    entered_password = post_request['password']
    if entered_password == '':
        error_messages.append(numeratio_static_textLanguage['global_input_alert_mandatoryField'])
    # elif entered_password != check_password:
    #     error_messages.append(numeratio_static_textLanguage['global_input_alert_passwordNotValid'])
    elif len(entered_password) > 128:
        error_messages.append(numeratio_static_textLanguage['global_input_alert_maxCharacters_128'])

Urls.py

urlpatterns = [
    path('login/', views.view_userLogin, name='page__user_login'),
        path('login/validate/', views.validate_userLogin, name='page__user_login_validate'),
        path('login/validate_email/', views.validate_userLogin_email, name='page__user_login_validateEmail'),
        path('login/validate_unique_token/', views.validate_userLogin_unique_token, name='page__user_login_validateUniqueToken'),
    .......
]
Вернуться на верх