Python 如何使用django禁止返回或刷新

Python 如何使用django禁止返回或刷新,python,django,Python,Django,这是我的代码: def to_complete(request): return MobileResponseRedirect('/battle/complete/') def complete(request): do_something() return MobileResponse(html) 但这种方法不能防止倒退 我在完成中做了一件重要的事情(比如在游戏中增加金钱) 我不希望用户刷新页面或返回到父页面 我能做什么 谢谢我看到了几个选项: 您可以在执行以下操作

这是我的代码:

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

def complete(request):
    do_something()
    return MobileResponse(html)
但这种方法不能防止倒退

我在
完成
中做了一件重要的事情(比如在游戏中增加金钱)

我不希望用户刷新页面或返回到父页面

我能做什么


谢谢

我看到了几个选项:

  • 您可以在执行以下操作()后再次重定向:

  • 如果仍然担心(特别是如果担心用户作弊系统),您应该在服务器上设置某种标志,表明操作已经完成。很难说在了解更多应用程序的情况下如何准确地做到这一点。一个示例可能是,如果用户执行了某些操作(例如,节拍a关卡),并记录该操作已发生,则仅允许该完整操作发生,以便该级别的节拍操作只能发生一次完整操作


  • 一个简单的想法是使用会话变量,如下所示:

    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)
    
    这种方法允许用户在
    中只输入一次,以完成
    完成
    。如果希望用户再次输入,只需取消设置会话变量

    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)