2012-05-14 55 views
0

我有視圖,它負責處理來自客戶端的所有Ajax提交。並區分他們由我使用不同的提交按鈕的名稱,如這一個如何識別Django中的哪個ajax?

<input type="submit" value="Send" name="send_message"> 

從這個question建議。 唯一的問題是,從該視圖方面,它似乎並不攜帶name到服務器端,所以我不能使用下面的if語句

if 'send_message' in request.POST: 

它的工作原理,如果我有新的一頁正常發送。但我想用它與Ajax。

我想出了一個黑客,你可以用jQuery添加這個名字。只需在serializing()之後輸入您的數據,然後連接名稱屬性data += "&send_message"

然後,if語句將起作用。但它似乎並不那麼幹淨。所以我想知道是否有更好的方法來處理這個問題?或者我應該製作不同的視圖來處理我擁有的不同Ajax電話?

回答

0

你真的應該將每個表單發佈到不同的URL。

如果沒有,您可以添加一個隱藏的輸入,並將該表單的名稱作爲值。

<input name="form_name" type="hidden" value="form_1" /> 

views.py:

FORM_NAME = request.POST [ 'FORM_NAME']

+0

這將是許多不同的網址,這實際上不將用戶帶到另一個頁面的東西。我認爲將所有Ajax調用堆疊到相同的url會更清潔。然後檢查ajax調用它並相應地處理它 – starcorn

+0

通常認爲只有一個函數(視圖,url)只執行一個特定任務時更清晰。但是如果你真的想把所有的代碼組織到一個視圖中,那麼你可以像上面那樣使用隱藏的元素。 –

相關問題