2011-05-01 81 views
1

我在我的应用程序中有几个表单,并且像用户完成它们之后的所有表单一样,我想将它们重定向到表单完成页面,其中显示了表单的详细信息提交后。django:创建一个通用表单完成页面

现在,假设我的表单都具有不同的属性,我如何创建一个公共视图和显示模板,以便我不必重新创建它们,因为它们都是类似的,而不是表单的细节被显示?

回答

1

根据这个Django: How do I redirect a post and pass on the post data你不能重定向发布数据,所以你必须要么1)显示成功页面在与表单相同的网址或2)将所有变量放入重定向网址。

如果你都OK显示在相同的URL形式,即成功/我的表格/不/我的表格/成功/,那么你可能会变异的canonical form processing view这样:

def contact(request): 
    if request.method == 'POST': 
     form = ContactForm(request.POST) 
     if form.is_valid(): 
      # ... 
      return render_to_response('form_success.html', {'form' : form,}) 
    else: 
     form = ContactForm()  
    return render_to_response('contact.html', {'form': form,}) 

然后在模板中,你可以这样做:

<h3>Success! You submitted:</h3> 

{% for field in form %} 
    {{field.label}}: {{field.data}} 
{% endfor %} 
+0

这不违反post/redirect/get模式吗?或者也许这是为了不同的情况。 http://en.wikipedia.org/wiki/Post/Redirect/Get – 2011-05-01 19:28:46

+0

是的,它的确如此。所以你现在必须警惕双重提交。 – Ted 2011-05-02 02:35:53

+0

双提交似乎很危险。 – goh 2011-05-03 08:42:28

相关问题