Django表单错误处理:错误的url?_有效吗()
大家好 如果表单提交到新页面并且表单验证失败,Django表单处理会让我很恼火。我打算返回到先前提交的表单,并显示错误消息以进行更正 将显示错误消息,但url链接未更改。 如何更改is\u valid()语句*的*else语句,以便重定向到早期形式? 谢谢你的建议 url.pyDjango表单错误处理:错误的url?_有效吗(),django,forms,validation,redirect,Django,Forms,Validation,Redirect,大家好 如果表单提交到新页面并且表单验证失败,Django表单处理会让我很恼火。我打算返回到先前提交的表单,并显示错误消息以进行更正 将显示错误消息,但url链接未更改。 如何更改is\u valid()语句*的*else语句,以便重定向到早期形式? 谢谢你的建议 url.py urlpatterns = patterns("", url(r"^add/$", "remap.views.add_project", name="add_project_location"), url
urlpatterns = patterns("",
url(r"^add/$", "remap.views.add_project", name="add_project_location"),
url(r"^add/details/$", "remap.views.add_project_details", name="add_project_details"),
)
views.py
def add_project_details(request):
if request.method == 'POST': # If the form has been submitted...
locationForm = LocationForm(request.POST)
if locationForm.is_valid(): # All validation rules pass
locality = locationForm.cleaned_data['locality']
state = locationForm.cleaned_data['state']
country = locationForm.cleaned_data['country']
projectForm = ProjectForm(initial = {
'locality': locality,
'state': state,
'country': country,
})
return render_to_response('map/add_project_details.html', {
'projectForm': projectForm,
}, context_instance = RequestContext(request))
else:
print locationForm.errors
return render_to_response('map/add_project_location.html', {
'locationForm': locationForm,
}, context_instance = RequestContext(request))
else:
return HttpResponseRedirect('../') # Redirect to the location reg if site is requested w/o proper location
除非告诉浏览器进行重定向,否则无法更新url。您在同一url上返回两个不同的html版本,这可能会让用户感到困惑 你应该做的是有两种观点。/addurl和add_project_location视图将接受一个post并进行验证,在成功之前一直停留在该url和视图上
成功后,它将设置一些会话变量,重定向到add_project_details页面。由于浏览器的工作方式,这样合并它们是不可能的。除非告诉浏览器进行重定向,否则无法更新url。您在同一url上返回两个不同的html版本,这可能会让用户感到困惑 你应该做的是有两种观点。/addurl和add_project_location视图将接受一个post并进行验证,在成功之前一直停留在该url和视图上
成功后,它将设置一些会话变量,重定向到add_project_details页面。由于浏览器的工作方式,这样合并它们是不可能的。没有理由对Django完全按照它的设计去做感到恼火 重定向位于与if request.method==“POST”对应的
else
子句上。因此,它只有在不是表单提交的情况下才会生效。换句话说,该视图永远不会实际显示空表单
然后,根据发布的表单是否有效,显示两个模板之一。此时您没有进行任何重定向
然而,即使您在表单无效时要求Django重定向,我也怀疑您是否会得到想要的结果。这是因为HTTP(而不是Django)的规则规定,您不能重定向帖子,因此您对重定向视图的请求将是一个GET,没有任何无效数据或错误消息。没有理由对Django完全按照它的设计去做感到恼火 重定向位于与if request.method==“POST”对应的
else
子句上。因此,它只有在不是表单提交的情况下才会生效。换句话说,该视图永远不会实际显示空表单
然后,根据发布的表单是否有效,显示两个模板之一。此时您没有进行任何重定向
然而,即使您在表单无效时要求Django重定向,我也怀疑您是否会得到想要的结果。这是因为HTTP(而不是Django)的规则规定您不能重定向POST,因此您对重定向视图的请求将是GET,没有任何无效数据或错误消息