python之路56 django最后一天 csrf跨站请求 auth模块登录注册方法

from django.contrib import auth from django.contrib.auth.models import User 1.用户注册功能 def register_func(request):

if request.method == 'POST':
    username = request.POST.get('username')
    password = request.POST.get('password')
    # 1.校验用户是否存在
    # res = auth.authenticate(request,username=username,此处缺密码)  必须把密码也传进去
    # print(res)
    res = User.objects.filter(username=username)
    if res:
        return HttpResponse('用户名已存在')
    # 2.注册该用户
    # User.objects.create(username=username,password=password)  # create方法不可以使用 密码不加密
    User.objects.create_user(username=username,password=password) # 正常创建 对密码加密
return render(request,'registerPage.html')

2.判断用户名和密码是否正确 def login_func(request):

print(request.user)
print(request.user.is_authenticated)  # 判断当前用户对象是否已登录
if request.method == 'POST':
    username = request.POST.get('username')
    password = request.POST.get('password')
    # 1.校验用户名和密码是否正确(不分开校验) 自己无法比对密码 必须要使用auth模块提供的方法才可以
    user_obj = auth.authenticate(request,username=username,password=password) # 得到用户对象
    # print(user_obj.password)
    if user_obj:
        # 2.用户登录成功(返回给客户端登录成功的凭证、令牌、随机字符串)
        auth.login(request,user_obj)   # 自己操作django_session表
        '''
        当执行完上述的操作之后我们就可以通过request.user直接获取到当前登录的用户对象数据
        '''
        return HttpResponse('登录成功!!!')

return render(request,‘loginPage.html’) 3.判断用户是否登录

request.user.is_authenticated

4.获取登录用户对象数据

request.user

5.校验用户是否登录装饰器 from django.contrib.auth.decorators import login_required

@login_required(login_url=‘/login/’) # 可以明确指定用户没有登录之后跳转到那个地址 局部配置

@login_required # 在settings添加 LOGIN_URL = ‘/login/’ 全局配置 def index_func(request):

return HttpResponse('index页面,只有登录的用户才可以查看')

6.校验原密码是否正确 request.user.check_password(原密码) 7.修改密码 request.user.set_password(新密码) request.user.save() # 一定要保存 8.退出登录 auth.logout(request)