【转载】Django自带的注册登陆功能  

1.登陆

知识点:
a.auth.authenticate(username=name值, password=password值)

验证用户名和密码

b.auth.login(request, user)

登陆操作

from django.contrib import auth


def djlogin(request):

    if request.method == 'GET':
        return render(request, 'day6_login.html')

    if request.method == 'POST':

        name = request.POST.get('name')
        password = request.POST.get('password')
        # 验证用户名和密码,验证通过的话,返回user对象
        user = auth.authenticate(username=name, password=password)
        if user:
            # 验证成功 登陆
            auth.login(request, user)
            return HttpResponseRedirect('/stuapp/index/')
        else:
            return render(request, 'day6_regist.html')

当用户登陆成功时,会生成一个sessionid保存在cookies中,可以在数据库django_session中查看,当用户访问其他页面时,可以通过sessionid判断用户是否已经登陆。

【转载】Django自带的注册登陆功能
 

【转载】Django自带的注册登陆功能
 

2.注册

知识点:
a.User模型

django自带User模型,导入方法:from django.contrib.auth.models import User

b.create_user创建用户

create_user是django封装好的用于创建用户的方法,创建方法:User.objects.create_user(username=name, password=password)
,此处的User是django中自带的User模型

from django.contrib.auth.models import User
def djregist(request):
if request.method == 'GET':
        return render(request, 'day6_regist.html')
    if request.method == 'POST':
        name = request.POST.get('name')
        password = request.POST.get('password')
        # 此处的User 是 django 自带的model
        User.objects.create_user(username=name, password=password)
        return HttpResponseRedirect('/uauth/dj_login/')

数据库中用于存储用户信息的表 auth_user

【转载】Django自带的注册登陆功能
 

3.退出登陆

知识点:
a.auth.logout(request)

退出登陆的操作

def djlogout(request):
    if request.method == 'GET':
        auth.logout(request)
        return HttpResponseRedirect('/uauth/dj_login/')

4.登陆验证

知识点:
a.login_required()

若在访问某页面时,需要确认用户登陆成功才能访问,可以在url中用login_required方法进行验证,如果登陆成功就执行,如果用户未登陆,自动跳转登陆页面。

b.LOGIN_URL

配置跳转路径,,当用户未登陆访问其他页面时,自动跳转到指定的url

    url(r'^index/', login_required(views.index)),
    url(r'^addstu/', login_required(views.addStu), name='astu'),
    url(r'^stupage/', login_required(views.stuPage)),

值得注意的是,一旦加上login_required方法,在用户未登陆时访问页面会出现如下的404错误,所需还需要在setting.py进行配置LOGIN_URL。

【转载】Django自带的注册登陆功能
 

配置跳转路径,当用户未登陆访问其他页面时,自动跳转到登陆页面

LOGIN_URL = '/uauth/dj_login/'