Ash*_*Ash 9 django django-forms
class UserForm(UserCreationForm):
def __init__(self, *arg, **kw):
super(UserForm, self).__init__(*arg, **kw)
# re-order so email appears last on this form
email_field = self.fields.pop('email')
self.fields['email'] = email_field
class Meta:
model = User
fields = ('first_name', 'last_name', 'username', 'email')
Run Code Online (Sandbox Code Playgroud)
我有一个表单用户可以更新他们的个人资料详细信息.
用户可以选择更新他们,passwords但不需要更新其他配置文件字段.
问题是我的验证在当踢password和password confirmation字段为空.
该User车型Password领域,我相信是一个required=True和blank=False领域,所以我需要在这个模型验证时,简单地从形式忽略空白的输入方式.
该User模型是随Django一起提供的模型:
from django.contrib.auth.models import User
谢谢
Ana*_*ass 13
UserCreationForm旨在用于创作.创建一个新的ModelForm比使用这个更好.
class UserUpdateForm(forms.ModelForm):
# Feel free to add the password validation field as on UserCreationForm
password = forms.CharField(required=False, widget=forms.PasswordInput)
class Meta:
model = User
# Add all the fields you want a user to change
fields = ('first_name', 'last_name', 'username', 'email', 'password')
def save(self, commit=True):
user = super(UserUpdateForm, self).save(commit=False)
password = self.cleaned_data["password"]
if password:
user.set_password(password)
if commit:
user.save()
return user
Run Code Online (Sandbox Code Playgroud)
或者,如果你想要UserCreationForm我不推荐的子类.你可以这样做 :
class UserForm(UserCreationForm):
password1 = forms.CharField(label=_("Password"), required=False
widget=forms.PasswordInput)
password2 = forms.CharField(label=_("Password confirmation"),
widget=forms.PasswordInput, required=False)
class Meta:
model = User
fields = ('first_name', 'last_name', 'username', 'email')
def save(self, commit=True):
user = super(UserUpdateForm, self).save(commit=False)
password = self.cleaned_data["password"]
if password:
user.set_password(password)
if commit:
user.save()
return user
Run Code Online (Sandbox Code Playgroud)
我建议你用一个简单的
class UserUpdateForm(forms.ModelForm):
class Meta:
model = User
# Add all the fields you want a user to change
fields = ('first_name', 'last_name', 'username', 'email')
Run Code Online (Sandbox Code Playgroud)
对于密码更改,您可以使用另一种专用表单,django.contrib.auth.forms.SetPasswordForm因为更改密码与更新用户信息的过程不同
| 归档时间: |
|
| 查看次数: |
4632 次 |
| 最近记录: |