【发布时间】:2010-01-13 18:57:34
【问题描述】:
全部,
我有一个模板页面,比如 x.html
我有 3 个文本字段 name(varchar2) ,age(int),school(varchar2) 。
如果用户在 x.html 的表单中输入值(比如 values name="a" ,age="2" ,school="a")并提交。我需要将相同的值返回给 x .html 指示错误。
我的问题是如何将相同的值返回给 x.html。
谢谢.....
【问题讨论】:
全部,
我有一个模板页面,比如 x.html
我有 3 个文本字段 name(varchar2) ,age(int),school(varchar2) 。
如果用户在 x.html 的表单中输入值(比如 values name="a" ,age="2" ,school="a")并提交。我需要将相同的值返回给 x .html 指示错误。
我的问题是如何将相同的值返回给 x.html。
谢谢.....
【问题讨论】:
来自docs:
在视图中处理表单的标准模式如下所示:
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,
})
【讨论】:
只要您将表单对象提供给呈现的模板,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 }} 将显示一个用于 myfield 的 HTML 小部件,其中包含基于上述视图代码的先前提交的值。当您使用空白表单响应GET(例如form = MyForm())时,它将是空白的。
【讨论】:
如果您使用 django 表单,它会自己进行验证,然后返回您需要的值。 Here 您可以阅读有关使用表单以及它们如何验证值的信息。基本上,当您将一些值传递到表单中并且它无效时,您只需再次呈现站点,但 django 会自动填充字段。不要费心写自己的表格,除非你真的,真的需要它们。在你的例子中你真的没有;-)
【讨论】:
我不确定您是如何处理表单信息的。但是,如果您使用 Django 内置的 Form API,它会为您处理大部分工作。有关详细信息,请查看 Django Docs for Forms http://docs.djangoproject.com/en/dev/topics/forms/#topics-forms-index
如果您使用表单 API 并且提交无效,Django 会为模板提供表单的绑定副本,其中已包含用户提供的数据。同样,您必须阅读 API 的详细信息,了解如何在您的情况下实现它。
【讨论】: