这是我的代码 - urls.py
path('post/<int:pk>/edit/',views.Edit_View, name = 'edit_view'),
views.py
def Edit_View(request,pk):
try:
my_form = Profile.objects.get(pk=pk)
except:
raise Http404('Page Doesnt Found')
form = ProfileForm(request.POST or None, instance=my_form)
if request.method == 'POST':
if form.is_valid():
form.save()
return redirect('detail_view',pk=pk)
else:
return render (request, 'edit_view.html',{'form':form})
模板
<form method="post">
{% csrf_token %}
{{form.as_p}}
<input type="submit" value="OK">
这样做很好,但在form = ProfileForm(request.POST or None, instance=my_form)
之后写if request.method == 'POST':
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})
它给出了
UnboundLocalError at /post/2/edit/
local variable 'form' referenced before assignment
错误,我想知道为什么会发生这样的事情!为什么早些时候这没有发生,后来发生了这样的错误,这是什么UnboundLocalError?
请指导我。 在此先感谢
答案 0 :(得分:1)
form
中的变量else
尚未分配任何值:
else:
return render (request, 'edit_view.html',{'form':form})
变量form
仅在if
中分配。 Python具有特定的范围规则,如果这些规则被破坏,Python会引发异常。 Python不会执行您的代码,因为如果执行else
,您的变量将被取消分配。
答案 1 :(得分:1)
在其他方面写下这个:
else:
form = ProfileForm()
return render (request, 'edit_view.html',{'form......