Форма as_p, проверка ошибок, django регистрация - PullRequest
0 голосов
/ 25 января 2020

Я использую form.as_p в моем шаблоне sign.in. Я заметил, что есть информация о длине пароля - она ​​требует не менее 8 букв. Но когда я регистрирую пользователя и ставлю пароль с 1 буквой, это не вызывает никакой ошибки. Он принимает это, но в конце концов невозможно войти в систему с этими данными. Вы знаете, как я могу решить это? Я имею в виду, как я могу поднять эту ошибку и не позволить зарегистрировать пользователя с коротким паролем?

{% extends 'base.html' %}

    {% block title %}Sign Up{% endblock %}

    {% block content %}
      <h2>Sign up</h2>
      <form method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">Sign up</button>
      </form>
    {% endblock %}

1 Ответ

0 голосов
/ 25 января 2020

Я написал свой собственный код, как это. Сначала вам нужно создать forms.py:

class RegisterForm(forms.ModelForm):
    username = forms.CharField(max_length=100)
    password1 = forms.CharField(max_length=100, widget=forms.PasswordInput)
    password2 = forms.CharField(max_length=100, widget=forms.PasswordInput)

    class Meta:
        model = User
        fields = [
            'username',
            'password1',
            'password2',
        ]

    def clean_password2(self):
        password1 = self.cleaned_data.get('password1')
        password2 = self.cleaned_data.get('password2')
        if password1 and password2 and password1 != password2:
            raise forms.ValidationError('passwords do not match')
        return password2

, а затем views.py:

def register_view(request):
    form = RegisterForm(request.POST or None)
    if form.is_valid():
        user = form.save(commit=False)
        password = form.cleaned_data.get('password1')
        user.set_password(password)
        user.save()
        new_user = authenticate(username=user.username, password=password)
        login(request, new_user)
        return redirect('home_app:index')
    return render(request, 'accounts/forms.html', {'form': form, 'title': 'Sign Up'})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...