1
我在我的應用程序中有幾個表單,並且像用戶完成它們之後的所有表單一樣,我想將它們重定向到表單完成頁面,其中顯示了表單的詳細信息提交後。django:創建一個通用表單完成頁面
現在,假設我的表單都具有不同的屬性,我如何創建一個公共視圖和顯示模板,以便我不必重新創建它們,因爲它們都是類似的,而不是表單的細節被顯示?
我在我的應用程序中有幾個表單,並且像用戶完成它們之後的所有表單一樣,我想將它們重定向到表單完成頁面,其中顯示了表單的詳細信息提交後。django:創建一個通用表單完成頁面
現在,假設我的表單都具有不同的屬性,我如何創建一個公共視圖和顯示模板,以便我不必重新創建它們,因爲它們都是類似的,而不是表單的細節被顯示?
根據這個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 %}
這不違反post/redirect/get模式嗎?或者也許這是爲了不同的情況。 http://en.wikipedia.org/wiki/Post/Redirect/Get – 2011-05-01 19:28:46
是的,它的確如此。所以你現在必須警惕雙重提交。 – Ted 2011-05-02 02:35:53
雙提交似乎很危險。 – goh 2011-05-03 08:42:28