django框架的新手,我只是想创建除管理员登录之外的单独登录表单。我需要使用用户名和密码对用户进行身份验证,从数据库中获取该用户的详细信息并将该数据传递给templae(home页面)显示它。
我的代码如下: -
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))
我尝试使用kwargs = {'user_id':employee_details.id},但它无法正常工作。重定向后如何将数据传递到主页?
由于
答案 0 :(得分:0)
您无法使用POST
请求重定向用户。请改用GET
参数。
在您的情况下,请求的数据已存储在会话中。只是尝试在下次请求时阅读会话。 Django contrib.auth
使用user.is_authenticated
方法完成工作。
答案 1 :(得分:0)
我尝试使用kwargs = {'user_id':employee_details.id},但它无法正常工作。重定向后如何将数据传递到主页?
你可以:
'/home/?a=1&b=2'
等网址中编码,参见urllib.urlencode)但是你应该使用standard Django user related functions and methods。请参阅“How to log a user in”。 TLDR:
user = authenticate(username=username, password=password)
login(request, user)