我在django遇到问题。我在我的应用程序中创建了一个表单,我可以在其中详细了解客户端。现在我想创建一个允许我编辑表单的表单。但是当我转到/ index / edit_client / 1时遇到一些问题,我收到了这个错误。
local variable 'form' referenced before assignment
我不知道我之所以遇到这个错误的原因是什么,但从我所看到的情况来看,除非当然还有另一种方法来创建编辑表单以编辑客户端表单,否则它无济于事。以下是一些有用的输出。
# urls.py
urlpatterns = patterns('',
(r'^index/$', login_required(direct_to_template), { 'template': 'index.html' }),
(r'^index/clients/$', client_info),
(r'^index/clients_details/(?P<id>\d+)/$', clients_details),
(r'^index/edit_client/(?P<id>\d+)/$', edit_client),
)
# views.py
@login_required
def edit_client(request, id=1):
clients_list = Client.objects.filter(pk=id)
if request.method == 'POST':
form = ClientForm(request.POST or None)
if form.is_valid():
form.save()
return HttpResponseRedirect('/index/clients/')
else: form = ClientForm()
return render_to_response('edit_client.html', {'form': form}, context_instance=RequestContext(request))
#edit_client.html
{% extends "base.html" %}
{% block content %}
<font face="verdana,news gothic,arial,heltevica,serif">
<h3>Edit Client</h3>
</font>
<form method= "POST" action="">
<font face="verdana,news gothic,arial,heltevica,serif">
<div id="form">
<table>
{{form.as_table}}
</table>
<div align="center" STYLE=" margin-right:190px">
<input type="submit" value="Submit" STYLE="background-color:#E8E8E8; color:#181818 "/>
</div>
</div>
</form>
{% endblock %}
答案 0 :(得分:5)
这将始终运行:
return render_to_response('edit_client.html', {'form': form}
但如果request.method
不是POST
,则不会为form
分配任何内容。
固定代码:
@login_required
def edit_client(request, id=1):
clients_list = Client.objects.filter(pk=id)
form = ClientForm()
if request.method == 'POST':
form = ClientForm(request.POST or None)
if form.is_valid():
form.save()
return HttpResponseRedirect('/index/clients/')
return render_to_response('edit_client.html', {'form': form}, context_instance=RequestContext(request))
答案 1 :(得分:1)
在edit_client
方法中,您在响应中传递form
,但是,如果该方法不是POST,则您不会初始化form
。