Python 在django中创建配置文件更新时出错

Python 在django中创建配置文件更新时出错,python,django,django-forms,Python,Django,Django Forms,我试图在django应用程序中创建配置文件更新,但在浏览器中出现以下错误 local variable 'form' referenced before assignment 任何帮助都将不胜感激。我现在很困惑。下面是我的观点.py。谢谢 View.py def update_profile(request): if request.method == 'POST': form = UpdateProfile(request.POST or None, instance

我试图在django应用程序中创建配置文件更新,但在浏览器中出现以下错误

local variable 'form' referenced before assignment
任何帮助都将不胜感激。我现在很困惑。下面是我的观点.py。谢谢

View.py

def update_profile(request):
    if request.method == 'POST':
        form = UpdateProfile(request.POST or None, instance=request.user)
        profile_form = ProfileEditForm(data = request.POST or None,instance=request.user,files=request.FILES)

        if form.is_valid() and profile_form.is_valid():
            form.save()
            profile_form.save()
            return redirect('profiles')
    else:
        form = UpdateProfile(instance=request.user)
        profile_form = ProfileEditForm(instance=request.user)
    context = {
        "form": form,
        "profile_form": profile_form,
    }
    template = 'edit.html'
    return render(request, template, context)
class UpdateProfile(forms.ModelForm):
    username = forms.CharField(required=True)
    email = forms.EmailField(required=True)
    first_name = forms.CharField(required=False)
    last_name = forms.CharField(required=False)

    class Meta:
        model = User
        fields = ['first_name', 'last_name', 'username', 'email']

class ProfileEditForm(forms.ModelForm):

    class Meta:
        model = Profile
        fields = ('date_of_birth', 'photo')
错误跟踪

Traceback:

File "/Users/Olar/Desktop/arbithub/lib/python2.7/site-packages/django/core/handlers/exception.py" in inner
  41.             response = get_response(request)

File "/Users/Olar/Desktop/arbithub/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
  187.                 response = self.process_exception_by_middleware(e, request)

File "/Users/Olar/Desktop/arbithub/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
  185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/Users/Olar/Desktop/arbithub/lib/python2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
  23.                 return view_func(request, *args, **kwargs)

File "/Users/Olar/Desktop/arbithub/src/profiles/views.py" in update_profile
  49.         if form.is_valid() and profile_form.is_valid():

Exception Type: UnboundLocalError at /profile/edit/
Exception Value: local variable 'form' referenced before assignment
form.py

def update_profile(request):
    if request.method == 'POST':
        form = UpdateProfile(request.POST or None, instance=request.user)
        profile_form = ProfileEditForm(data = request.POST or None,instance=request.user,files=request.FILES)

        if form.is_valid() and profile_form.is_valid():
            form.save()
            profile_form.save()
            return redirect('profiles')
    else:
        form = UpdateProfile(instance=request.user)
        profile_form = ProfileEditForm(instance=request.user)
    context = {
        "form": form,
        "profile_form": profile_form,
    }
    template = 'edit.html'
    return render(request, template, context)
class UpdateProfile(forms.ModelForm):
    username = forms.CharField(required=True)
    email = forms.EmailField(required=True)
    first_name = forms.CharField(required=False)
    last_name = forms.CharField(required=False)

    class Meta:
        model = User
        fields = ['first_name', 'last_name', 'username', 'email']

class ProfileEditForm(forms.ModelForm):

    class Meta:
        model = Profile
        fields = ('date_of_birth', 'photo')
将根据请求提供其他代码。

尝试以下操作:

def update_profile(request):
    form = UpdateProfile()
    if request.method == 'POST':
        form = UpdateProfile(data = request.POST or None, instance=request.user)
        profile_form = ProfileEditForm(data = request.POST or None,instance=request.user,files=request.FILES)

        if form.is_valid() and profile_form.is_valid():
            form.save()
            profile_form.save()
            return redirect('profiles')
    else:
        form = UpdateProfile(instance=request.user)
        profile_form = ProfileEditForm(instance=request.user)
    context = {
        "form": form,
        "profile_form": profile_form,
    }
    template = 'edit.html'
    return render(request, template, context)
试试这个:

def update_profile(request):
    form = UpdateProfile()
    if request.method == 'POST':
        form = UpdateProfile(data = request.POST or None, instance=request.user)
        profile_form = ProfileEditForm(data = request.POST or None,instance=request.user,files=request.FILES)

        if form.is_valid() and profile_form.is_valid():
            form.save()
            profile_form.save()
            return redirect('profiles')
    else:
        form = UpdateProfile(instance=request.user)
        profile_form = ProfileEditForm(instance=request.user)
    context = {
        "form": form,
        "profile_form": profile_form,
    }
    template = 'edit.html'
    return render(request, template, context)

请添加完整错误trace@Navid2zp我需要它。@BearBrown添加了错误traceIs这个缩进是否与运行代码的缩进相同?特别注意内部
如果
。是相同的缩进请添加完整错误trace@Navid2zp我需要它。@BearBrown添加了错误traceIs这个缩进是否与运行代码的缩进相同?请特别注意内部
if
。是相同的缩进错误`'NoneType'对象没有属性'is\u valid'`它现在可以工作,但配置文件表单不显示在浏览器上尝试添加
打印(配置文件表单)
before
return
语句,检查终端是否分配了变量。@可能是缩进有问题,即使看起来不像。获取一个
'NoneType'对象没有属性“is\u valid”
错误表明前两个
if
没有按其应该的方式嵌套。就我所见,您的原始代码应该运行时不会出现赋值前引用变量的错误,因为
form
是在两条路径上创建的(
if
else
).error`'NoneType'对象没有属性'is\u valid'`它现在可以工作,但是配置文件表单没有显示在浏览器上。请尝试在
return
语句之前添加
print(profile\u form)
,以检查终端是否分配了变量。@King缩进可能有问题,即使看起来不像。获取一个
'NoneType'对象没有属性“is\u valid”
错误表明前两个
if
没有按其应该的方式嵌套。就我所见,您的原始代码应该运行时不会出现赋值前引用变量的错误,因为
form
是在两个路径上创建的(
if
else
)。