Python 请解释为什么会发生此UnboundLocalError?

Python 请解释为什么会发生此UnboundLocalError?,python,django,Python,Django,这是我的密码- url.py 模板 <form method="post"> {% csrf_token %} {{form.as_p}} <input type="submit" value="OK"> 它给 UnboundLocalError位于/post/2/edit/ 赋值前引用的局部变量“form”错误,我想知道为什么会发生这种事情!为什么之前没有发生这种情况,后来又发生了这种错误?这个UnboundLocalError是什么 请引导我。 提前感谢未为其他中的

这是我的密码- url.py

模板

<form method="post">
{% csrf_token %}
{{form.as_p}}
<input type="submit" value="OK">
它给

UnboundLocalError位于/post/2/edit/
赋值前引用的局部变量“form”
错误,我想知道为什么会发生这种事情!为什么之前没有发生这种情况,后来又发生了这种错误?这个UnboundLocalError是什么

请引导我。
提前感谢

未为
其他
中的变量
表单
赋值:

其他:
返回呈现(请求'edit_view.html',{'form':form})


变量
表单
仅在
if
中赋值。Python有特定的作用域规则,如果这些规则被破坏,Python将抛出一个异常。Python不会执行您的代码,因为在执行
else
的事件中,您的变量是未赋值的


这里详细回答了这个问题:

未为
else
中的变量
表单
赋值:

其他:
返回呈现(请求'edit_view.html',{'form':form})


变量
表单
仅在
if
中赋值。Python有特定的作用域规则,如果这些规则被破坏,Python将抛出一个异常。Python不会执行您的代码,因为在执行
else
的事件中,您的变量是未赋值的


这里详细回答了这个问题:

在其他部分写下:

else:
    form = ProfileForm()
    return render (request, 'edit_view.html',{'form......

在另一部分写下:

else:
    form = ProfileForm()
    return render (request, 'edit_view.html',{'form......

提示:如果该方法不是POST,会发生什么情况?当
请求时,您正试图使用
表单
。方法
等于
“POST”
,但它从未被分配。@IgnacioVazquez Abrams先生,那么它的probably@pault是的,先生,已修复我的问题..工作代码和非工作版本之间的区别在于
表单=…
行的位置。正如其他评论者所说,您在
else
语句中使用变量
form
,而没有首先定义它。提示:如果方法不是POST,会发生什么?您试图在
请求时使用
form
。方法
等于
“POST”
,但它从未被赋值。@IgnacioVazquez Abrams先生,然后它就开始了probably@pault是的,先生,我已经解决了我的问题。工作代码和非工作版本之间的区别在于
表单=…
行的位置。正如其他评论者所说,您在
else
语句中使用变量
form
,而没有首先定义它。它可以编译,但在运行时会消亡。这一点很好,@IgnacioVazquez Abrams。我的措辞不正确。这不是一个编译的问题;这是Python根据自己的作用域规则抛出异常的问题。我会编辑我的答案。好吧,它会编译,但运行时会死掉。说得好,@IgnacioVazquez Abrams。我的措辞不正确。这不是一个编译的问题;这是Python根据自己的作用域规则抛出异常的问题。我会编辑我的答案。另外,当你有一个发布但无效的表单时,请确保你返回一个回复。现在,您没有处理这个问题。另外,当您有一个已发布但无效的表单时,请确保您返回一个响应。现在,你没有处理好。
def Edit_View(request,pk):
    try:
        my_form = Profile.objects.get(pk=pk)
    except:
        raise Http404('Page Doesnt Found')

    if request.method == 'POST':
        form = ProfileForm(request.POST or None, instance=my_form)
        if form.is_valid():
            form.save()
            return redirect('detail_view',pk=pk)
    else:
        return render (request, 'edit_view.html',{'form':form})
else:
    form = ProfileForm()
    return render (request, 'edit_view.html',{'form......