Django возвращает несколько значений - PullRequest
0 голосов
/ 09 февраля 2012

Мое приложение предоставляет 2 способа входа на сайт (та же страница). Первый - это имя пользователя и пароль, а другой - имя пользователя и аварийный пароль. У меня есть backend.py как

class PersonAuthenticationBackend(object):
  def authenticate(self, username=None, password=None):
    try:
      person = User.objects.get(username=username)
      if person.check_password(password):
        return person
      else:
        try:
          db_ecode=person.get_profile().u_emergency_code
          if password==db_ecode:
            print "EMERGENCY LOGIN"
            return person
          else :
            return None
        except:
          return None
    except User.DoesNotExist:
            pass
    return None

    def get_user(self, user_id):
      try:
          return User.objects.get(pk=user_id)
      except User.DoesNotExist:
          return None

Теперь, как я узнаю, что пользователь вошел в систему с помощью экстренного входа?

Ответы [ 4 ]

0 голосов
/ 13 февраля 2012
person.a = lambda: None
setattr(person.a, 'login', True)

, затем повторите попытку, используя

print "person.a %s"%person.a.login

, и сохраните ее в сеансе.

0 голосов
/ 09 февраля 2012

Отправить сигнал . Сделайте запись в журнале . Или вы ищете что-то еще?

0 голосов
/ 09 февраля 2012

Вы всегда можете добавить сеансы, которые вы можете использовать позже?

0 голосов
/ 09 февраля 2012

Это python, вы можете динамически добавлять атрибуты к объектам:

if person.check_password(password):
    person.loged_normally = True
    return person

и

if password==db_ecode:
    print "EMERGENCY LOGIN"
    person.loged_normally = False
    return person

Если вы хотите получать информацию не только во время одного запроса, но и в течение всего сеансазатем вы должны сохранить его в механизме сеанса и / или базе данных.

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