Django用户身份验证错误

时间:2012-07-17 14:18:47

标签: django django-models django-views django-authentication

我使用以下代码登录,但稍后当我从index.html导航并尝试访问get_profile()时,它表示该ID未关联。但是当我打印以下变量时都是假的。我在这里做错了什么?

EDIT

def someotherview(request):
  logging.debug(request.user.is_authenticated()) #prints false
  logging.debug(request.user.is_active) #prints false

这是登录的方式

def logon(request):
  qd = get_request_type(request)
  try:
   uname = qd.__getitem__('username')
   pwd = qd.__getitem__('password')

  user = authenticate(username = uname, password = pwd)
  if user is not None:
     response_dict.update({'yes':1})
     logging.debug("labs_home1 ==================")
     return render_to_response('home/index.html', context_instance=RequestContext(request, {'response_dict':response_dict,'a':1}))
  else:
     response_dict.update({'yes':0})
     logging.debug("labs_home2 ==================")
     return render_to_response('registration/login.html', context_instance=RequestContext(request, {'response_dict':response_dict,'a':1})

另请查看我的问题django get_profile error

2 个答案:

答案 0 :(得分:2)

authenticate仅验证用户名和密码是否正确,并返回找到该对的用户实例。要实际登录用户并使其在模板,会话等中可用,您需要调用login

login(request, user)

答案 1 :(得分:0)

简答:使用内置身份验证。不要试图写你自己的。 https://docs.djangoproject.com/en/dev/topics/auth/

  • 您的代码完全被破坏 - 在login视图中,变量unamepwd未定义。请发布工作代码。
  • 您似乎自己正在进行身份验证 - 为什么不使用内置身份验证方法?
  • 看起来您的问题的一部分是您使用变量user定义登录用户,但只存在于函数logon的范围内 - 其余代码正在检查request.user。这就是您需要使用内置身份验证方法的原因。