【发布时间】:2014-09-16 18:55:08
【问题描述】:
我是 django 新手,我尝试创建一个简单的表单来更新一些记录。
models.py
class ConfigForm(forms.ModelForm):
def __init__(self,idprov,*args,**kwargs):
super(ConfigForm,self).__init__(*args,**kwargs)
self.id_proveedor = idprov
class Meta:
model = Config
views.py
@csrf_exempt
def configView(request):
pk = request.POST.get('idprov')
prov = get_object_or_404(Config, id_proveedor=pk)
if request.method == 'POST':
form = ConfigForm(request.POST, instance = prov)
if form.is_valid():
form.save()
else:
form = ConfigForm(Request.POST, instance = prov )
return render_to_response('config.html',{'form':form},RequestContext(request))
我的 updateform.html
{% extends 'base.html' %}
{% block content %}
<form method='POST' action='' class='form'>
<div class="form-group">
{% csrf_token %}
{{ form.as_p }}
</div>
<button type='submit' class="btn btn-primary">Grabar</button>
</form
{% endblock %}
我从其他表单传递 id 并且工作正常。 但是当我按下按钮保存时,会显示下一个错误:
Page not found (404) Request Method: POST Request URL: http://127.0.0.1:8080/config/
No Config matches the given query.
我不知道错误在哪里。 该错误仅在我尝试保存更改时出现 请帮忙
提前致谢
【问题讨论】:
-
一旦提交表单,下次加载页面时,它是一个get请求,
pk = request.POST.get('idprov')评估为None,这就是问题的原因。要验证,只要在这行后面加上print pk,你就会看到它是None -
@Karth1kr 谢谢,我明白你的意思,但我想重定向到应用程序的主页,总是出现同样的错误。
-
那是因为
form.save之后没有重定向,重新加载了同一个页面。 -
我放了 return HttpResponseRedirect('/index/') 什么也没发生,总是同样的错误
标签: python django django-forms django-views