0

ユーザーがユーザー アカウントを作成できるフォームがあります。また、パスワードの最小長を 8 に設定しており、これに違反すると、エラーが発生します。問題は、最小パスワード長の 8 に違反してもエラーが発生しないことです。

誰か親切に助けてくれませんか。

def Registration(request):  
    form = UserRegistration()
    if request.method =='POST':
        form = UserRegistration(request.POST)
        if form.is_valid():
            user = User.objects.create_user(
                username=form.cleaned_data['username'], 
                email=form.cleaned_data['email'], 
                password=form.cleaned_data['password']
                )
            user.is_active = True
            user.save()
             return render(request,'choose.html',{'form':form})

    return render(request, 'register.html', {'form': form},)

私のforms.py

 class UserRegistration(forms.Form):
    username = forms.CharField()
    email = forms.EmailField(error_messages={'required':'Error Missing Field , Please Fill this Field'})

    password = forms.CharField(
    widget=forms.PasswordInput(render_value=False)
    )

    MIN_LENGTH = 8

    def clean_password(self):
            password = self.cleaned_data['password']

            if len(password) > self.MIN_LENGTH:
                    raise forms.ValidationError("The new password must be at least %d characters long." % self.MIN_LENGTH)

            return password

私のテンプレート

<form method ="POST">
    {% csrf_token %}


<span id="error">{{form.username.errors}}</span>
<span id="error2">{{form.email.errors}}</span>
<span id="error3">{{form.password.errors}}</span>

{{form.username}}
{{form.email}}
{{form.password}}
    <input type = "submit" value= "save" id="box2"/>
</form>
4

2 に答える 2

3

clean_new_password1はモデル フィールドではないため呼び出されないかnew_password1、に変更するclean_passwordか、super を呼び出してデフォルトのチェックをオーバーライドします

于 2013-05-20T10:48:07.933 に答える
1

あなたのif状態は正しくありません:

それ以外の

if len(password) > self.MIN_LENGTH:

使用する

if len(password) <= self.MIN_LENGTH:
                #<---- changed condition
于 2013-05-20T10:50:33.060 に答える