[Django高级之Auth模块]

[Django高级之Auth模块]
auth模块 ←详情点击查看
1、Auth模块是什么
Auth模块是Django自带的用户认证模块:

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

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

1 django提供的用户认证,创建,修改密码。。。用户相关操作
2 不需要创建用户表了,默认带了
3 插入数据(创建用户):
python3 manage.py createsuperuser # 创建超级用户 通常只有一到两个超级用户
2、auth模块常用方法
from django.contrib import auth # 导入auth模块
urls.py
from app01 import views

urlpatterns = [
url(r’^admin/’, admin.site.urls),
url(r’^login/’,views.MyLogin.as_view()), # 登录界面
url(r’^aa/’,views.aa,name=‘aa’),
url(r’^set_password/’,views.set_password,) # 修改密码
]
views.py
from django.contrib import auth # 导入auth模块

def login(request):

if request.method == 'POST':
    username = request.POST.get('username')
    password = request.POST.get('password')
    
    # 返回一个对象 即验证用户名以及密码是否正确,一般需要username 、password两个关键字参数。request不是必填参数
    user_obj = auth.authenticate(request,username=username,password=password)
    # print(user_obj)
    # print(user_obj.username)
    # print(user_obj.password)
    
    if user_obj:	# 返回值有可能为假 所以需要判断是否为真
        auth.login(request,user_obj)   # 为真的话 保存用户状态 用auth.login()方法
        
        '''只要执行了login方法、那么在任意位置都可以通过request.user获取当前对象'''

return render(request,'login.html',locals())

def aa(request):
‘’‘只要执行了login方法、那么在任意位置都可以通过request.user获取当前对象’’’

print(request.user) # 获取用户对象 如果没有登录就是匿名用户
# print(request.user.username)
# print(request.user.password)
print(request.user.is_authenticated())  # 判断用户是否登录
return HttpResponse('哈哈')

修改密码

验证是否登录装饰器 导入模块↓

from django.contrib.auth.decorators import login_required

@login_required(login_url=‘dl’) # 验证是否登录装饰器

@login_required # 全局验证是否登录装饰器
def set_password(request):

old_password = request.POST.get('old_password')  # 老密码
new_password = request.POST.get('new_password')  # 新密码

# 校验原密码是否相同 得到一个返回时 True or false
# 用 request.user.check_password(老密码) 可以 自动校验
is_right = request.user.check_password(old_password)
# print(is_right)

if is_right:  
    
    # 修改新密码  使用 request.user.set_password(新密码)方法
    request.user.set_password(new_password)
    
    # 一定要保存 不保存 修改无效
    request.user.save()
return render(request,'set_password.html',locals())

login.html

Title

用户登录

{% csrf_token %}

username:

password:

<button>提交</button>
set_password.html Title

密码修改

{% csrf_token %}
<p>username:<input type="text" name="username" value="{{ request.user.username }}" disabled></p>
    
<p>old_password:<input type="text" name="old_password"></p>  # 输入老密码
    
<p>new_password:<input type="text" name="new_password"></p>  # 输入新密码
    
<input type="submit">
总结操作: from django.contrib import auth

校验用户名密码是否正确

auth.authenticate(request,username=username,password=password)

保存用户状态

auth.login(request,user_obj)

查看用户是否登录

request.user.is_authenticated()

获取用户对象

request.user

校验原密码是否正确

request.user.check_password()

修改密码

request.user.set_password()
request.user.save()

校验是否登录装饰器

from django.contrib.auth.decorators import login_required
“”"
跳转全局配置
只需在settings配置文件下写入
LOGIN_URL = ‘/lg/’
直接在你想要装饰的对象上写入@login_required即可

跳转局部配置
@login_required(login_url=’/lg/’)
“”"
USB Microphone https://www.soft-voice.com/
Wooden Speakers https://www.zeshuiplatform.com/
亚马逊测评 www.yisuping.cn
深圳网站建设www.sz886.com

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值