Python 无属性';设置密码';制作自定义用户表单时
因此,我试图为注册和管理的事情定制一个用户表单。问题是,我试图注册某人,但得到的错误是没有“set_password”属性。以下是my views.py中的:Python 无属性';设置密码';制作自定义用户表单时,python,django,database,model,Python,Django,Database,Model,因此,我试图为注册和管理的事情定制一个用户表单。问题是,我试图注册某人,但得到的错误是没有“set_password”属性。以下是my views.py中的: form = RegistrationForm() if request.method=="POST": if request.POST['action']=="register": form = RegistrationForm(request.POST or None) if form.is_v
form = RegistrationForm()
if request.method=="POST":
if request.POST['action']=="register":
form = RegistrationForm(request.POST or None)
if form.is_valid():
form.save()
以下是forms.py中的RegistrationForm():
class RegistrationForm(UserCreationForm):
fname = forms.CharField(max_length=256, label="", required=True, widget=forms.TextInput(attrs={'class': 'form-control','placeholder': 'First Name','required':True}))
lname = forms.CharField(max_length=256, label="", required=True, widget=forms.TextInput(attrs={'class': 'form-control','placeholder': 'Last Name','required':True}))
email = forms.EmailField(max_length=256, label="Email", required=True, widget=forms.EmailInput(attrs={'class': 'form-control','placeholder': 'Email','required':True, 'type':'email'}))
emailConfirm = forms.EmailField(max_length=256, label="", required=True, widget=forms.EmailInput(attrs={'class': 'form-control','placeholder': 'Confirm Email','required':True, 'type':'email'}))
password1 = forms.CharField(max_length=256, label="", required=True, widget=forms.PasswordInput(attrs={'class': 'form-control','placeholder': 'Password','required':True}))
password2 =forms.CharField(required=False)
biography = forms.CharField(label = "Biography",required=False)
research_place = forms.CharField(label="Research Place",required=False)
studies = forms.CharField(label="Studies",required=False)
class Meta:
model = RegisterUser
fields = ('email','emailConfirm','password1','biography','research_place','studies')
def save(self,commit=True):
RegisterUser = super(RegistrationForm,self).save(commit=False)
RegisterUser.first_name=self.cleaned_data['fname']
RegisterUser.last_name=self.cleaned_data['lname']
RegisterUser.biography=self.cleaned_data['biography']
RegisterUser.research_place="Def"
RegisterUser.studies="Def"
print (RegisterUser.studies)
if commit:
print("hurr")
RegisterUser.save()
return RegisterUser
和my models.py:
class RegisterUser(models.Model):
user=models.OneToOneField(User,on_delete=models.CASCADE)
biography = models.CharField(max_length=1000000)
research_place = models.CharField(max_length=1000000)
studies = models.CharField(max_length=1000000)
最后是admin.py:
class RegisterInline(admin.StackedInline):
model = RegisterUser
can_delete = False
class UserAdmin(BaseUserAdmin):
inlines = (RegisterInline, )
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
请让我知道我做错了什么,如果还有什么我应该改变的。非常感谢 根据,您需要从类继承您的RegisterUser
类。您还需要指定一些关键实现
引用文件
构建兼容的自定义用户模型的最简单方法是
从AbstractBaseUser继承。AbstractBaseUser提供了核心
用户模型的实现,包括哈希密码和
标记化密码重置
您需要在自定义用户模型中指定的其他关键实现包括
RegisterUser
类。您还需要指定一些关键实现
引用文件
构建兼容的自定义用户模型的最简单方法是
从AbstractBaseUser继承。AbstractBaseUser提供了核心
用户模型的实现,包括哈希密码和
标记化密码重置
您需要在自定义用户模型中指定的其他关键实现包括