2011-05-01 28 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

相關問題