私は独自のカスタムユーザーモデルを使用していますが、django.contrib.authユーザーモデルを継承しています。私はユーザー名、電子メール、およびパスワードフィールドを持っています。パスワードフィールドを明示的に追加するのではなく、継承によってデフォルトで追加されるためです。コマンドラインからスーパーユーザーを作成しようとすると、通常のデフォルトのDjangoパスワード検証が正しく機能しています。しかし、私がサインアップフォームを持っているとき、そうではありません。送信をクリックするとメールとユーザー名の確認が正しく機能していますが、パスワードの検証はありません。私は欲しいものを入力することができ、それはパスワードを受け入れるだろう。Djangoのパスワード検証が機能しない
は、ここに私のforms.py
class RegisterForm(forms.ModelForm):
class Meta:
model = User
fields = ['username', 'email', 'password']
username = forms.CharField(label='Username', widget=forms.TextInput(attrs={'placeholder': 'Username:'}))
email = forms.EmailField(label='Email', widget=forms.EmailInput(attrs={'placeholder': 'Email:'}))
password = forms.CharField(label='Password', widget=forms.PasswordInput(attrs={'placeholder': 'Password:'}))
は、ここに私の見解だだ:
class RegisterView(SuccessMessageMixin, View):
form_class = RegisterForm
template_name = 'oauth/auth_form.html'
success_message = "You have successfully created an account!"
# Display blank form
def get(self, request):
form = self.form_class(None)
return render(request, self.template_name, {'form': form})
def post(self, request):
form = self.form_class(request.POST)
if form.is_valid():
user = form.save(commit=False) # Do not save to table yet
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user.set_password(password)
user.save()
# Let's try to login the user
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
return redirect('profiles: index')
return render(request, self.template_name, {'form': form})
パスワードフィールドはジャンゴからデフォルトのパスワード検証で正しく検証されますように、私はそれを作ることができますどのように?