0

Am new to django framework,am just trying to create seperate login form other than administrator login.I need to authenticate a user using username and password, fetch the details of that user from database and pass that data to a templae (home page) to display it.

My code is as follows:-

view.py:-

def login_user(request):
user = ''
passw = ''
username1 = ''

if request.POST:
    user = request.POST.get('username')
    passw = request.POST.get('password')
    #password1 = ''
    try:
        userdata = Employee.objects.get(username = user, password = passw)
        user_id = request.session["user_id"] = userdata.id
        employee_details = Employee.objects.get(id=user_id)
        request.session['user_id'] = employee_details.id
        return HttpResponseRedirect('/home/', kwargs={'user_id': employee_details.id}))
    except Employee.DoesNotExist:
        state = "Username or password incorrect !"
        return render_to_response('login.html',
            {'username' : username1,'state' : state},
            context_instance = RequestContext(request))
else:
    state = "Please login here:"
    return render_to_response('login.html' , {'state' : state} ,
         context_instance = RequestContext(request))

i tried using kwargs={'user_id': employee_details.id} but it is not working.How can i pass datas to home page after redirecting?

Thanks

4

2 回答 2

0

您不能使用POST请求重定向用户。改用GET参数。

在您的情况下,请求的数据已经存储在会话中。只需尝试在下一个请求时从会话中读取。Djangocontrib.auth使用user.is_authenticated方法来完成这项工作。

于 2013-01-21T10:30:36.343 回答
0

我尝试使用 kwargs={'user_id': employee_details.id} 但它不起作用。重定向后如何将数据传递到主页?

你可以:

  1. 使用会话变量
  2. 使用“get”变量(传递在 URL 中编码的变量,'/home/?a=1&b=2'urllib.urlencode

但是,您应该使用标准的 Django 用户相关功能和方法。请参阅“如何登录用户”。TLDR:

  1. 检查凭据:user = authenticate(username=username, password=password)
  2. 测试用户是否不是 None 以及您想要的任何其他测试(他是否活跃,有一些特权等)
  3. 将 request.user 标记为已通过身份验证:login(request, user)
于 2013-01-21T10:31:49.027 回答