Хотя может быть несколько точек входа, важно, чтобы ваш код авторизации / сеанса соответствовал принципу DRY.
Однажды / если вы используете единый путь к коду для входа в систему, вы сможете найти подходящее место в этом пути к коду, чтобы сделать что-то простое:
user.last_login = time
user.num_logins++
user.save()
Кроме того, вы можете использовать кулдаун memcache, чтобы убедиться, что это происходит только один раз каждые, скажем, 30 минут:
cooldown_memcache_key = "login_cooldown_%s" % user.id
cooldown = memcache.get(cooldown_memcache_key)
if cooldown is None:
user.last_login = time
user.num_logins++
user.save()
memcache.add(cooldown_key, True, 1800)