Python 请解释为什么会发生此UnboundLocalError?
这是我的密码- url.py 模板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是什么 请引导我。 提前感谢未为其他中的
<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......