#python #django #django-forms #django-templates
Вопрос:
Я пытаюсь создать систему регистрации пользователей ванили с помощью django, используя пользовательскую форму регистрации. Я хотел бы проверить правильность пароля, не перезагружая страницу. Я изо всех сил пытаюсь как потребовать, чтобы пароли соответствовали стандартному набору требований к паролям django, так и проверить совпадение двух паролей. Чего я хочу добиться, так это чтобы поля пароля вели себя как поле электронной почты. В поле электронной почты, если символ @ отсутствует, появится всплывающее окно, сообщающее мне, что его необходимо изменить. Однако, если пароли не совпадают или в них очень мало символов, я все равно могу отправить форму. Это ожидаемое поведение или что-то идет не так? Я знаю, что могу проверить, действительна ли форма без перезагрузки (например, с помощью ajax для проверки формы is_valid ()) после ее отправки, но я пытаюсь выяснить, необходимо ли это?
вот моя анкета
class registration_form(UserCreationForm): username = forms.Field(widget=forms.TextInput(attrs={'class': "form-field w-input", 'placeholder': 'Username'})) email = forms.Field(widget=forms.EmailInput(attrs={'class': "form-field w-input", 'placeholder': 'Email address'})) password1 = forms.Field(widget=forms.PasswordInput(attrs={ 'class': "form-field w-input", 'placeholder': 'Password'})) password2 = forms.Field(widget=forms.PasswordInput(attrs={ 'class': "form-field w-input", 'placeholder': 'Repeat Password'})) class Meta: model = User fields = ('username',)
Вот соответствующая часть моего шаблона
lt;form action="{%url 'signup' %}" method="POST"gt; {% csrf_token %} {{ registration_form.non_field_errors }} {{ registration_form.source.errors }} {{ registration_form.source }} lt;div class="div-block-register-text"gt; lt;div class="fieldWrapper"gt; {{ registration_form.username.errors }} {{ registration_form.username}} lt;/divgt; lt;div class="fieldWrapper"gt; {{ registration_form.email.errors }} {{ registration_form.email}} lt;/divgt; lt;div class="fieldWrapper"gt; {{ registration_form.password1.errors }} {{ registration_form.password1}} lt;/divgt; lt;div class="fieldWrapper"gt; {{ registration_form.password2.errors }} {{ registration_form.password2}} lt;/divgt; lt;/divgt;
вот соответствующая часть представления
class CustomLoginView(View): def get(self,request): context = {'registration_form': registration_form, 'login_form':AuthenticationForm} template = 'homepage/login-register.html' return render(request,template,context=context)
Комментарии:
1. я почти уверен, что у вас нет встроенной этой функции … вам нужно проверить это самостоятельно с помощью js или на записи с помощью python
2. Я думаю, что проверка, если пароль слишком короткий или что-то в этом роде, не нужна. Вам просто нужно проверить, соответствует ли пароль сохраненному паролю пользователя
3. бичанна, это для регистрации, а не для входа в систему :). Спасибо, Джоран, это объяснило бы мои трудности!