我有一个要求,从登录页面跳转到管理页面,您知道URL地址应该更改为管理页面。
如果我只使用渲染到管理页面,则URL地址不会改变,因此在post中我得到了OptimusCrime的好答案。
但是如果我重定向然后渲染模板,我就无法将请求从登录页面传递到管理页面。
在登录页面的views.py中:
...
return redirect('/app_admin/index/')
在管理页面的views.py中:
...
return render(request, 'app_admin/index.html') # there the request is None.
如何将请求传递给管理页面的views.py?
答案 0 :(得分:1)
您应该看一些基本的Django教程,例如this one,它描述了如何创建登录处理程序。
要点是:
在用户提交表单的视图中,您将评估用户名和/或密码。如果提交了正确的信息(用户名和密码),则将此信息保存在会话中。将用户重定向到登录(受限)区域并检查会话。如果会话具有正确的信息,则允许用户查看内容,否则将用户重定向。
简单登录逻辑(说明性):
def login(request):
m = Member.objects.get(username=request.POST['username'])
if m.password == request.POST['password']:
# Username and password is correct, save that the user is logged in in the session variable
request.session['logged_in'] = True
request.session['username'] = request.POST['password']
# Redirect the user to the admin page
return redirect('/app_admin/index/')
else:
# Username and/or password was incorrect
return HttpResponse("Your username and password didn't match.")
简单的管理页面逻辑(说明性):
def admin_index(request):
# Make sure that the user is logged in
if 'logged_in' in request.session and request.session['logged_in']:
# User is logged in, display the admin page
return render(
request,
'app_admin/index.html',
{'username': request.session['username']}
) # You can now use {{ username }} in your view
# User is not logged in and should not be here. Display error message or redirect the user to the login page
return HttpResponse("You are not logged in")
请注意,这些是两个不同的视图(和网址),您必须在urlpatterns中进行映射。