django中django.contrib.auth.forms中的UserCreationForm是否不再工作



我试图在django的帮助下通过前端注册一个新用户,但我看到很多教程使用UserCreationForm,但就我的情况而言,它似乎不起作用。

视图.py

def registerUser(request) :
form = RegisterForm()
context = {'form':form}
if request.method == 'POST' :
form = RegisterForm(request.POST) 
if form.is_valid():
form.save()
messages.success(request, 'User Created succesfully')
print('user Created')
return redirect('users:login')
else :
print('Not valid')
return render(request, 'register.html', context)

表单.py

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

class RegisterForm(UserCreationForm):
email = forms.EmailField()
class Meta:
model = User
fields = ["username", "email", "password1", "password2"]

我的is_valid()函数告诉我request.POST无效。

查看Django的UserCreationForm源代码。
# default
class Meta:
model = User
fields = ("username",)
field_classes = {'username': UsernameField}

通过实现您自己的字段,您可能会破坏Django的默认表单。我所看到的,错误在于您没有为username设置field_classes。试着改变它。

在您的forms.py中尝试此操作,

class UserCreateForm(UserCreationForm):
fields = ('username', 'email', 'password1', 'password2', 'first_name', 'last_name')
model = YOUR_MODEL_THAT_YOU_HAVE_CREATED()
class Meta:
# Some Custom Options...

最新更新