2011-03-15 51 views
0

這是我的代碼刷新:如何禁止背部或使用Django

def to_complete(request): 
    return MobileResponseRedirect('/battle/complete/') 

def complete(request): 
    do_something() 
    return MobileResponse(html) 

但這種方法無法阻止回來,

我做重要的事情complete(例如遊戲中增加的錢)

,我不想用戶刷新頁面或回父頁面,

我能做些什麼,

感謝

回答

1

一個簡單的想法是使用一個會話變量,就像這樣:

def to_complete(request): 
    if request.session.has_key("complete_pending"): 
     return HttpResponseForbidden() 
    request.session["complete_pending"] = True 
    return MobileResponseRedirect('/battle/complete/') 

def complete(request): 
    if not request.session.get("complete_pending", False): 
     return HttpResponseForbidden() 
    request.session["complete_pending"] = False 
    do_something() 
    return MobileResponse(html) 

這種做法將讓用戶在to_completecomplete只輸入一次。如果您希望用戶再次輸入,只需取消設置會話變量。

0

一對夫婦選擇我看到:

  1. 你可以do_something後(再次重定向):

    def complete(request): 
        do_something() 
        return MobileResponseRedirect('/battle/complete_msg/') 
    
    def complete_msg(request): 
        return MobileResponse(html) 
    
  2. 如果仍然擔心(尤其是關注用戶作弊系統),您應該在服務器上設置某種標誌,表明該操作已完成。很難說如何正確地做到這一點,不知道更多關於你的應用程序。一個例子可能只是如果用戶已經做了某些動作(例如擊敗關卡)並且記錄了該動作已經發生,那麼只允許該完整動作發生,以便完成動作只能發生一次關於等級拍動-行動。