Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django更新配置文件表单_Python_Django - Fatal编程技术网

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)

请添加包含更多详细信息的错误