как распечатать формы. ValidationError в Django - PullRequest
0 голосов
/ 11 июня 2018

обнаружил это в учебнике, но «пароль и пароль-подтверждения не совпадают» не печатается на html-странице.

from django import forms
from django.contrib.auth.models import User


class UserForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput)
confirm_password = forms.CharField(widget=forms.PasswordInput())
first_name = forms.CharField(max_length=30)
last_name = forms.CharField(max_length=30)
email = forms.EmailField(max_length=254)

class Meta:
    model = User
    fields = ['username', 'first_name', 'last_name', 'email', 'password','confirm_password']

def clean(self):
    cleaned_data = super(UserForm, self).clean()
    password = cleaned_data.get("password")
    confirm_password = cleaned_data.get("confirm_password")

    if password != confirm_password:
        raise forms.ValidationError(
            "password and confirm_password does not match"
        )

ОБНОВЛЕНИЕ: Работает с использованием {{form.non_field_errors}} в шаблоне.

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Многочисленные способы сделать это из ваших представлений формируются также из вашей модели.

Class UserForm(forms.ModelForm):
pass

    def clean_password(self):
        data = self.cleaned_data
        password = self.cleaned_data.get('password')
        confirm_password = self.cleaned_data.get('confirm_password')

        if password != confirm_password:
            raise forms.ValidationError('Passwords must be same')

Кстати. Если вы используете Python 3.6, тогда super (). Method_name (args), если используете 2.7, тогда super (class_name), Я) .method_name (арг)

0 голосов
/ 11 июня 2018

попробуй:

def clean(self):
    cleaned_data = super(UserForm, self).clean()
    password = cleaned_data.get("password")
    confirm_password = cleaned_data.get("confirm_password")

    if password != confirm_password:
        raise forms.ValidationError(
            "password and confirm_password does not match"
        )
    else:
        form = UserForm()
        # If form is not valid, this would re-render 
        return render(request, 'template.html', {'form': form})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...