关键词

详解Django的 login() 函数:用户登录

Django的login()函数

Django中的login()函数是用来验证用户身份的,如果验证成功,函数会返回一个HttpResponseRedirect()对象,如果验证失败,函数会返回一个HttpResponse()对象。

login()函数定义如下:

from django.contrib.auth import authenticate, login
from django.contrib.auth.decorators import login_required

def my_view(request):
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(request, username=username, password=password)
    if user is not None:
        login(request, user)
        # Redirect to a success page.
    else:
        # Return an 'invalid login' error message.

使用方法

使用Django的login()函数,需要先通过authenticate()函数进行用户身份验证,如果验证成功,再调用login()函数登录用户。代码示例:

from django.contrib.auth import authenticate, login
from django.shortcuts import render, redirect

def my_view(request):
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(username=username, password=password)
        if user is not None:
            login(request, user)
            return redirect('home')
        else:
            error = 'Invalid username or password'
    else:
        error = ''
    return render(request, 'login.html', {'error': error})

上面的代码中,用户提交的用户名和密码通过POST请求传递到my_view()视图函数中。视图函数首先通过authenticate()函数验证用户身份,验证成功后,调用login()函数将用户信息存储在session中。如果用户身份验证失败,视图函数会返回一个包含错误提示的页面。

示例

示例1

from django.contrib.auth import authenticate, login
from django.shortcuts import render, redirect

def my_view(request):
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(username=username, password=password)
        if user is not None:
            login(request, user)
            return redirect('home')
        else:
            error = 'Invalid username or password'
    else:
        error = ''
    return render(request, 'login.html', {'error': error})

上面这段代码是一个基本的用户登录视图函数。当用户提交用户名和密码后,如果验证成功,将会调用login()函数进行登录,并且跳转到首页。

示例2

from django.contrib.auth import authenticate, login
from django.http import HttpResponse

@login_required
def my_view(request):
    # ...
    return HttpResponse("You're logged in. Hello %s!" % request.user.username)

上面这段代码是一个需要用户登录才能访问的视图函数。@login_required装饰器会检查用户是否已经登录,如果没有登录,则会重定向到登录页面。如果用户已经登录,视图函数将返回一个包含用户欢迎信息的页面。

本文链接:http://task.lmcjl.com/news/16253.html

展开阅读全文