Я решил эту проблему, используя систему промежуточного программного обеспечения Django и сеанс.Я думаю, что использование сеанса - лучший способ гарантировать, что действие происходит только при входе в систему (тогда как URL-адрес может быть перезагружен вручную).
Сеансы Django не работают "из коробки", поэтому я реализовал свойсобственные сессии.Тем не менее, существует хорошая реализация для конкретных приложений, как указано в этой статье: http://blog.notdot.net/2010/02/Webapps-on-App-Engine-Part-5-Sessions
Я реализовал свой класс промежуточного программного обеспечения следующим образом и добавил его в MIDDLEWARE_CLASSES в settings.py:
class LoginManager(object):
def process_view(self, request, view_func, view_args, view_kwargs):
user = users.get_current_user()
if user is not None:
marker = Session.get(user.user_id())
if marker is None:
login_action()
Session.set(user.user_id(), "true")