Python Django更新配置文件表单
我正在构建一个应用程序,允许用户查看和编辑自己的个人资料。用户可以查看他们的配置文件,并且可以从管理端编辑配置文件。但是,当用户试图编辑自己的信息时,他们会收到一个Python Django更新配置文件表单,python,django,Python,Django,我正在构建一个应用程序,允许用户查看和编辑自己的个人资料。用户可以查看他们的配置文件,并且可以从管理端编辑配置文件。但是,当用户试图编辑自己的信息时,他们会收到一个名称错误,告诉他们没有定义args。下面是我如何尝试实现编辑功能的: 表格 class UpdateProfile(forms.ModelForm): username = forms.CharField(required=False) email = forms.EmailField(required=False)
名称错误
,告诉他们没有定义args
。下面是我如何尝试实现编辑功能的:
表格
class UpdateProfile(forms.ModelForm):
username = forms.CharField(required=False)
email = forms.EmailField(required=False)
first_name = forms.CharField(required=False)
last_name = forms.CharField(required=False)
age = forms.IntegerField(required=False)
height = forms.IntegerField(required=False)
weight = forms.IntegerField(required=False)
class Meta:
model = User
#These are the fields that i want to be made editable.
fields = ('username', 'email', 'first_name', 'last_name', 'age', 'height', 'weight')
def clean_email(self):
username = self.cleaned_data.get('username')
email = self.cleaned_data.get('email')
if email and User.objects.filter(email=email).exclude(username=username).count():
raise forms.ValidationError('This email address is already in use. Please supply a different email address.')
return email
def save(self, commit=True):
super(UpdateProfile, self).__init__(*args, **kwargs)
#Here i am trying to add the new data to the users profile
if commit:
user_profile.user.save()
return user_profile
def update_profile(request):
args = {}
if request.method == 'POST':
form = UpdateProfile(request.POST, instance=request.user)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse('account/profile.html'))
else:
form = UpdateProfile()
args['form'] = form
return render(request, 'account/edit_profile.html', args)
视图
class UpdateProfile(forms.ModelForm):
username = forms.CharField(required=False)
email = forms.EmailField(required=False)
first_name = forms.CharField(required=False)
last_name = forms.CharField(required=False)
age = forms.IntegerField(required=False)
height = forms.IntegerField(required=False)
weight = forms.IntegerField(required=False)
class Meta:
model = User
#These are the fields that i want to be made editable.
fields = ('username', 'email', 'first_name', 'last_name', 'age', 'height', 'weight')
def clean_email(self):
username = self.cleaned_data.get('username')
email = self.cleaned_data.get('email')
if email and User.objects.filter(email=email).exclude(username=username).count():
raise forms.ValidationError('This email address is already in use. Please supply a different email address.')
return email
def save(self, commit=True):
super(UpdateProfile, self).__init__(*args, **kwargs)
#Here i am trying to add the new data to the users profile
if commit:
user_profile.user.save()
return user_profile
def update_profile(request):
args = {}
if request.method == 'POST':
form = UpdateProfile(request.POST, instance=request.user)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse('account/profile.html'))
else:
form = UpdateProfile()
args['form'] = form
return render(request, 'account/edit_profile.html', args)
在表单的
save
方法中,您正在使用未声明的args
和kwargs
变量。将它们替换为commit
:
def save(self, commit=True):
super(UpdateProfile, self).__init__(commit)
请添加包含更多详细信息的错误