如何将后期数据返回到视图中的手动html

时间:2011-09-02 06:32:04

标签: django forms templates

我有一个form.py文件,其中包含表单数据和一些验证,但在我的模板文件中,我使用我的手动html文件,而不是从form.py渲染它,从模板发布数据后,我怎么能当view.py中的数据无效(在form.py中验证)时,将所有数据返回到模板。

抱歉,我的问题不是那么清楚,我的问题是如何在发现错误后将数据渲染回views.py中的手动模板。

以下是代码示例:

form.py(我在表单中有很多字段和一些验证)

class Project_f(forms.Form):

  slug=forms.CharField(max_length=100)
  ......

views.py

def post_view(request, *args, **kwargs):

    Pr_form=Project_f(request.POST,request.FILES)
    if Pr_form.is_valid():
   .........

       return HttpResponseRedirect('/admin/mpm/project/')

    '''when Pr_form is not valid'''

    c={'form': Pr_form}
    c.update(csrf(request))
    return render_to_response('project_form.html',c)

模板

手动模板不使用form.py,所有元素都与form.py中的元素相同,但格式/小部件不同,例如与一些js。

2 个答案:

答案 0 :(得分:0)

仅仅因为您没有将表单对象发送到模板,您仍然可以对数据进行验证。无论你提交什么视图,你只需要测试request.POST然后执行旧的myForm = MyForm(data = request.POST),接着是myForm.is_valid()。只需确保您在HTML中创建的表单将其尊重的“name”元素设置为您在表单类中的内容。

class MyForm(forms.Form):
   foo = forms.CharField()
   bar = forms.CharField()


def myView(request):
   if request.POST:
      myForm = MyForm(data=request.POST)
      if myForm.is_valid():
         """ do stuff """
      else:
         """ do stuff with errors """
   else:
      """ print a page or somthing """

答案 1 :(得分:0)

问:如何在发现错误后将数据渲染回views.py中的手动模板?

我认为post_view将处理Pr_form POST请求,但GETPOST都可以在same view处理

答:Pr_form.is_valid()返回False时,Pr_form个实例将填充相应的错误消息和<用户输入的strong>数据,因此如果您将验证失败的同一Pr_form实例返回到您的模板,它应该会显示错误消息和用户输入的数据,除非您有自定义您在模板中显示Pr_form的方式,如果是,请按here

显示{{Pr_form.slug.errors}}