Как запретить назад или обновить с помощью django - PullRequest
0 голосов
/ 15 марта 2011

это мой код:

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

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

но этот метод не может предотвратить возвращение,

Я делаю Важную вещь в complete (например, Увеличение денег в игре)

и я не хочу, чтобы пользователь обновлял страницу или возвращался на родительскую страницу,

что я могу сделать,

спасибо

Ответы [ 2 ]

1 голос
/ 15 марта 2011

Простая идея - использовать переменную сеанса, например:

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. Если вы хотите, чтобы пользователь снова вводил данные, просто удалите переменную сеанса.

0 голосов
/ 15 марта 2011

Я вижу пару вариантов:

  1. Вы можете перенаправить снова после do_something ():

    def complete(request):
        do_something()
        return MobileResponseRedirect('/battle/complete_msg/')
    
    def complete_msg(request):
        return MobileResponse(html)
    
  2. Если проблема по-прежнему существует (особенно если речь идет о системе мошенничества пользователей), вы должны установить на сервере своего рода флаг, что действие было выполнено. Трудно сказать, как именно это сделать, зная больше о вашем приложении. Одним из примеров может быть только разрешение этого завершенного действия, если пользователь выполнил какое-то действие (например, разбить уровень), и записать, что действие выполнено, так что полное действие может произойти только один раз для уровня -действие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...