Python--day65(auth模块、自关联)

1. auth模块

1、什么是auth模块

Auth模块是Django自带的用户认证模块:

我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能,这还真是个麻烦的事情呢。

Django作为一个完美主义者的终极框架,当然也会想到用户的这些痛点。它内置了强大的用户认证系统--auth,它默认使用 auth_user 表来存储用户数据。

2、使用

1. 登录

from django.contrib import auth

def login(request):
    if request.method == 'GET':
        return render(request, 'login.html')
    else:
        username = request.POST.get('username')
        password = (request.POST.get('password'))

        user_obj = auth.authenticate(request, username=username, password=password)
        if user_obj:
            auth.login(request, user=user_obj)
            return render(request,'main.html', {'username':username})
        else:
            return redirect('/common/fail/')

2. 验证(登录认证装饰器)

from django.contrib.auth.decorators import login_required
@login_required(login_url='/common/login/')

# 不需要自己写装饰器了,先导一个模块,然后@login_required(login_url='/common/login/'),如果登录了,则继续执行,没有登录,则调到登录界面

3. 注册

def register(request):
    if request.method == 'GET':
        return render(request, 'register.html')
    else:
        username = request.POST.get('username')
        password = request.POST.get('password')
        surepassword = request.POST.get('surepassword')
        print(username, password, surepassword)
        if password == surepassword:
            User.objects.create_user(username=username, password=password)
            return render(request, 'login.html')
        else:
            return render(request, 'register.html')

4. 修改密码

def modify(request):
    if request.method == 'GET':
        return render(request, 'modify.html')
    else:
        username = request.POST.get('username')
        password = request.POST.get('password')
        new_password = request.POST.get('new_password')
        print(username, password, new_password)
        res = request.user.check_password(password)
        if res:
            request.user.set_password(new_password)
            request.user.save()
            return render(request, 'login.html')
        else:
            return render(request, 'modify.html')

5. 注销

def logout(request):
    auth.logout(request)
    return render(request, 'login.html')

2. 自关联

猜你喜欢

转载自www.cnblogs.com/wangyong123/p/11226783.html