这是我的代码:
def to_complete(request):
return MobileResponseRedirect('/battle/complete/')
def complete(request):
do_something()
return MobileResponse(html)
但这种方法无法阻止,
我在complete
中做了一件重要的事情(比如在比赛中加钱)
我不希望用户刷新页面或返回父页面,
我能做什么,
感谢
答案 0 :(得分: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_complete
和complete
中输入一次。如果您希望用户再次输入,只需取消设置会话变量。
答案 1 :(得分:0)
我看到几个选项:
您可以在do_something()后再次重定向:
def complete(request):
do_something()
return MobileResponseRedirect('/battle/complete_msg/')
def complete_msg(request):
return MobileResponse(html)
如果仍然担心(特别是如果担心用户作弊系统),您应该在服务器上设置某种操作已完成操作的标志。很难说如何正确地做到这一点w / out了解更多关于你的应用程序。一个示例可能是仅允许在用户完成某些操作(例如,击败某个级别)并且记录该操作已发生的情况下发生此完整操作,以便完成操作仅对级别节拍发生一次-action。