如何在Django中验证用户?

时间:2013-11-17 18:54:46

标签: django django-authentication

我想对用户进行身份验证,以便当他登录到他的帐户然后想要返回登录页面时,他/她应该被自动重定向到仪表板页面。我怎么能这样做?

@login_required
@csrf_exempt
def dashboard(request):
    users = GrabhaloUser.objects.exclude(user_id = request.user.id)

    if request.is_ajax():
        if request.POST.has_key('message'):
            selected_users = request.POST.getlist('selected_users[]')
            message = request.POST['message']
            send_query(request,selected_users,message)

    ctx = { 'users' : users }

    return render_to_response('dashboard/dashboard.html',ctx, context_instance = RequestContext(request))

登录网址

urlpatterns = patterns('',
    url(r'login/',login,kwargs = {'template_name' : 'auth/login.html'}, name = 'grabhalo_login'),
    url(r'logout/', logout,kwargs = {'template_name' : 'auth/logout.html'}, name = 'grabhalo_logout'),
    url(r'register/','apps.auth.views.register', name = 'grabhalo_register'),
)

2 个答案:

答案 0 :(得分:1)

创建一个函数login_page,检查那里的用户身份验证,如果经过身份验证,将其重定向到仪表板,否则返回登录页面。 将此函数映射到urls.py

中的login网址
def login_page(request):

    if request.user.is_authenticated():
        return redirect('/dashboard/')
    else:
        return login(request)

然后将此功能映射到登录URL。

url(r'login', 'modules.energy.login.views.login_page', name = 'cilantro_login'),

答案 1 :(得分:0)

你可以试试这个:

每当用户单击登录页面链接时,都会执行登录页面的视图。在该视图中,检查用户是否已登录。如果用户已登录,则将其重定向到仪表板,否则显示登录页面。它很简单。示例代码:

if request.user.is_authenticated():
    #load dashboard
else:
    #load login page