【发布时间】:2011-10-31 14:49:03
【问题描述】:
你好 Stackoverflow 的人,
如果表单提交到新页面并且表单验证失败,我对 Django 表单处理感到恼火。我打算返回之前提交的表单,并显示错误消息以进行更正。
将显示错误消息,但 url 链接没有改变。 如何更改 is_valid() 语句* 的 *else 语句,以便重定向到之前的形式?
感谢您的建议!
urls.py
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
【问题讨论】:
标签: django forms validation redirect