django返回多个值

时间:2012-02-09 10:33:37

标签: django

我的应用程序提供了两种登录网站的方式(同一页面)。首先是用户名&密码和其他用户名&紧急密码。我有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 :(得分:0)

这是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

如果您不仅要在一个请求期间而是在整个会话期间获取信息,那么您必须将其保存到会话引擎和/或数据库中。

答案 1 :(得分:0)

发送signal。制作一个log record。或者你正在寻找别的东西?

答案 2 :(得分:0)

您可以随时添加可以在以后使用的会话吗?

答案 3 :(得分:0)

person.a = lambda: None
setattr(person.a, 'login', True)

然后, 使用

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

然后将其存储在会话中。