出错时返回Django表单内容
大家好,
我有一个模板页面,叫做 x.html。
在这个页面里,有三个文本输入框,分别是名字(varchar2)、年龄(int)和学校(varchar2)。
如果用户在 x.html 的表单中输入了值,比如名字是 "a",年龄是 "2",学校是 "a",然后提交了表单。我需要把这些值再返回到 x.html,并显示一个错误提示。
我的问题是,怎么把这些值返回到 x.html 呢?
谢谢!
4 个回答
0
如果你在使用Django的表单,它会自己进行验证,然后返回你需要的值。在这里你可以了解如何使用表单以及它们是如何验证值的。简单来说,当你把一些值传入表单,如果这些值不合法,你只需要重新渲染页面,但Django会自动填充字段。除非你真的非常非常需要,不然就别费劲自己写表单。在你的例子中,你真的不需要这样做;-)
2
Django会把你提交的值再写回去,只要你把表单对象提供给渲染的模板就可以了。比如,在你的视图里,可以写成这样:
# handle POST
form = MyForm(request.POST)
if form.is_valid():
# do something and redirect
else:
# render the template with the invalid form
return render_to_response('mytemplate.html', {'form': form})
然后在你的模板里,可以写成这样:
{{ form.myfield.label_tag }}
{% if form.myfield.errors %} indicate error message/icon here {% endif %}
{{ form.myfield }}
注意,{{ form.myfield }}
会显示一个HTML控件,用来展示myfield
的内容,并且会根据上面视图的代码显示之前提交的值。如果你用一个空的表单来响应一个GET
请求(比如说form = MyForm()
),那么它就会是空白的。
2
来自文档的内容:
在视图中处理表单的标准步骤大致是这样的:
def contact(request):
if request.method == 'POST': # If the form has been submitted...
form = ContactForm(request.POST) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
# Process the data in form.cleaned_data
# ...
return HttpResponseRedirect('/thanks/') # Redirect after POST
else:
form = ContactForm() # An unbound form
return render_to_response('contact.html', {
'form': form,
})