群晖ds218 做网站,wordpress源代码修改,上海最新新闻事件今天国内,518机械加工网【1】Auth模块 auth就是django 的一个app#xff0c;做用户管理。 Django作为一个完美主义者的终极框架#xff0c;当然也会想到用户的这些痛点。它内置了强大的用户认证系统–auth#xff0c;它默认使用 auth_user 表来存储用户数据 默认的用户表示auth_user # 创建一个用…【1】Auth模块 auth就是django 的一个app做用户管理。 Django作为一个完美主义者的终极框架当然也会想到用户的这些痛点。它内置了强大的用户认证系统–auth它默认使用 auth_user 表来存储用户数据 默认的用户表示auth_user # 创建一个用户可以用代码可以用命令 【1.1】模块常用方法 1、authenticate()提供了用户认证功能即验证用户名以及密码是否正确一般需要username 、password两个关键字参数。
如果认证成功用户名和密码正确有效便会返回一个 User 对象。
authenticate()会在该 User 对象上设置一个属性来标识后端已经认证了该用户且该信息在后续的登录过程中是需要的。# 用法
user authenticate(usernameusernamer,passwordpassword)2、login用户校验通过让它登录执行它-当前登录用户写入到session中-后续 request.user 就能拿到当前登录用户
3、logout退出---》清空session
4、request.user.is_authenticated 返回True或False
5、login_requierd 登录认证装饰器---》放在视图函数上 login_required(login_url/login/)
6、create_user普通用户-User.objects.create()--密码是加密的---》这样存密码是明文的
7、create_superuser超级用户 python38 manage.py createsuperuser8、check_password 通过明文密码校验密码是否正确
9、set_password修改密码user.set_password(new_password)user.save()10、User对象的属性username passwordis_staff 用户是否拥有网站的管理权限能不能登录admin后台管理is_active 是否允许用户登录, 设置为 False可以在不删除用户的前提下禁止用户登录is_active是False----authenticate也查不出来is_superuser是否是超级管理员admin中权限最高 【1.2】校验用户
user authenticate(usernameusernamer,passwordpassword)
from django.contrib.auth.models import User
userUser.objects.filter(usernameusername).first()
if user and user.check_password(password):print(用户名密码正确)
else:print(用户名密码错误) 【1.3】auth模块加密
auth模块的密码加密--同样的密码--》再次加密--》密文也不一样如何实现pbkdf2_sha256$ # 加密方式 260000$ #过期时间H93ubuUFw6FbYc6B8ojzKA$ # 随机串秘钥H0ZnaiJOm/pI4K802Y2TcO5SQ7iWDcx5Emb/hdABd8 #明文加密后的后期如果你自己写了User表但是想用人家的密码加密就可以使用 -resmake_password(123456)-check_password(明文密文)
【2】缓存 页面静态化 缓存---》本身数据在数据库中---》如果访问量较大---》每次都需要去数据库查询---》影响效率---》我们可以对数据做缓存--》以后先从缓存中取数据--》如果取到直接返回---》不需要查数据库---》如果取不到---》再查数据库---》查完放到缓存中 【2.1】django默认缓存缓存的位置
内存缓存演示文件缓存数据库缓存redis缓存后期会用 1、默认情况缓存到内存中 CACHES {default: {BACKEND: django.core.cache.backends.locmem.LocMemCache,}
} 2、缓存到文件中 CACHES {default: {BACKEND: django.core.cache.backends.filebased.FileBasedCache, #指定缓存使用的引擎LOCATION: D:\Python27\django_05\cache, #指定缓存的路径TIMEOUT:300, #缓存超时时间(默认为300秒,None表示永不过期)OPTIONS:{MAX_ENTRIES: 300, # 最大缓存记录的数量默认300CULL_FREQUENCY: 3, # 缓存到达最大个数之后剔除缓存个数的比例即1/CULL_FREQUENCY默认3}}
} 【2.2】缓存的三种粒度 第一种全站缓存 全站缓存使用方式-如下-只需要配置中间件即可 MIDDLEWARE [django.middleware.cache.UpdateCacheMiddleware,。。。。。django.middleware.cache.FetchFromCacheMiddleware
]django.middleware.cache.UpdateCacheMiddleware ----- 写在中间件的最前面django.middleware.cache.FetchFromCacheMiddleware ----- 写在中间件的最后面 第二种视图缓存 from django.views.decorators.cache import cache_page
cache_page(timeout10)
def demo09(request):print(来了老弟)book_list Book.objects.all()return render(request, books.html, {books: book_list})使用cache_page装饰器timeout为过期时间 第三种局部缓存
{% load cache %}{% cache 10 name %}
可以能有很多代码
{% endcache %}
必须要写{% load cache %}cache ------- 固定写法10 ------- 过期时间name -------- 起个名字随意