2012-12-30 14 views
2

假設我有一個Web應用程序,它在每個會話中顯示2個隨機按鈕,我希望用戶單擊1按鈕或其他按鈕。如果點擊一個按鈕,我想增加該按鈕的分數。但是,用戶無法控制每次顯示2個按鈕,並且有數千個可能的按鈕。django POST [合法性]

如果我創建一個視圖來增加按鈕,我將如何確保用戶不會通過瀏覽器手動進入該視圖。

我的想法是,你需要創建一個表單並讓用戶POST到某個地址,但是你怎麼知道用戶不只是通過AJAX發送一個POST請求來遞增按鈕,而且用戶實際上通過2個按鈕從隨機會話中接收該按鈕。

我該如何在Django中處理這個問題有沒有文檔詳細說明Django如何特別支持這個?

編輯:或者你是否必須爲每個按鈕選擇會話創建一個唯一的會話ID並檢查每個按鈕點擊唯一會話ID。

回答

0

創建一個會話變量來跟蹤他們看到的按鈕,如:

def button_display_view(request): 
    # ...lots of cool logic 
    session['buttons_shown'] = [button_1_primary_key, button_2_primary_key] 
    return response 

然後,在你點擊按鈕查看,保證了按鍵點擊是,他們顯示的按鈕列表。用戶將不瞭解會話變量,也不能編輯它,就像使用會話變量跟蹤身份驗證時一樣。

如果您正在構建多變量測試系統(甚至是一個AB測試系統),可能值得檢查this MVT app的想法。