Django大回顾 - 9 Auth模块的使用、缓存

【1】Auth模块

  auth就是django 的一个app,做用户管理。

 

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


默认的用户表示auth_user
# 创建一个用户:可以用代码,可以用命令

        【1.1】模块常用方法

'''
1、authenticate()提供了用户认证功能,即验证用户名以及密码是否正确,一般需要username 、password两个关键字参数。
如果认证成功(用户名和密码正确有效),便会返回一个 User 对象。
authenticate()会在该 User 对象上设置一个属性来标识后端已经认证了该用户,且该信息在后续的登录过程中是需要的。# 用法:
user = authenticate(username='usernamer',password='password')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(username='usernamer',password='password')
from django.contrib.auth.models import User
user=User.objects.filter(username=username).first()
if user and user.check_password(password):print('用户名密码正确')
else:print('用户名密码错误')

        【1.3】auth模块加密

'''auth模块的密码加密--同样的密码--》再次加密--》密文也不一样如何实现?pbkdf2_sha256$   # 加密方式 260000$           #过期时间H93ubuUFw6FbYc6B8ojzKA$ # 随机串,,秘钥H0ZnaiJOm/pI4K802Y2TcO5SQ7iWDcx5E+mb/hdABd8= #明文加密后的后期如果你自己写了User表,但是想用人家的密码加密,就可以使用 -res=make_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,            # 最大缓存记录的数量(默认300)'CULL_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(timeout=10)
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       -------- 起个名字(随意)
'''

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/203045.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GitHub工业级开源软件:基于网络的过程可视化(SCADA/HMI/仪表板)

GitHub工业级开源软件:基于网络的过程可视化(SCADA/HMI/仪表板)  作者:本站编辑  2023-11-25 06:52:35  117 大家好,我是 Fun-Fun君,每天介绍github上最有价值的开源项目 今天介绍 FUXA 基于网络的过程可视化(SCADA/HMI/仪表板)软件 github地址:…

ChatGPT能帮助--掌握各种AI绘图工具,随意生成各类型性图像

2023年随着OpenAI开发者大会的召开,最重磅更新当属GPTs,多模态API,未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义,不亚于互联网和个人电脑的问世。360创始人周鸿祎认为未来各行各业如果不能搭上这班车…

Camunda 7.x 系列【60】流程分类

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址:https://gitee.com/pearl-organization/camunda-study-demo 文章目录 1. 前言2. 案例演示2.1 后端2.2 前端2.3 测试1. 前言 钉钉中的OA审批分类: 企业级的业务…

UDP多人群聊

一.创建类 二.类 1.Liao类 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.net.*; import java.io.IOException; import java.lang.String;public class Liao extends JFrame{private static final int DEFAULT_PORT8899;private JLabel st…

QT使用http通信的同步和异步

在Qt与Http通信的时候,会根据不同的情况使用同步或者异步的方式进行数据请求。 同步,即发送Http请求之后,会一直等待服务器返回的数据,接收到数据之前,程序一直阻塞。 异步,即发送Http请求之后&#xff0…

【musl-pwn】msul-pwn 刷题记录 -- musl libc 1.2.2

前言 本文不分析 musl libc 相关源码,仅仅为刷题记录,请读者自行学习相关知识(看看源码就行了,代码量也不大) starCTF2022_babynote 保护:保护全开 程序与漏洞分析: 程序实现了一个菜单堆&…

自适应局部降噪滤波器的python实现-------冈萨雷斯数字图像处理

自适应局部降噪滤波器 自适应局部降噪滤波器是一种信号处理技术,用于降低图像或信号中的噪声水平,同时保留图像或信号的细节。其原理基于局部区域内信号的统计特性和噪声的特征,通过动态调整滤波器的参数来适应不同区域的信号和噪声属性。 自…

Mac系统升级node.js版本和npm版本

升级node.js版本 第一步:查询当前node.js版本 node -v 第二步:清除node.js的缓存 sudo npm cache clean -f 第三步:验证缓存是否清空 npm cache verify 第四步:安装n工具,n工具是专门用于管理node.js版本的工具…

Day52力扣打卡

打卡记录 Collapsing Strings&#xff08;Trie树&#xff09; 链接 #include <iostream> #include <algorithm> using namespace std; const int N 2e6 10; int son[N][26], idx, cnt1[N], cnt2[N]; int main() {auto insert [&](string& str, int* c…

【Qt】在表格QTableWidget或者QTableView中,当主键Id存在时更新数据,不存在时添加数据解决方案

问题 有时在开发中&#xff0c;表格需要显示数据&#xff0c;每一行呢&#xff0c;需要记录对应的id。 当更新表格数据时&#xff0c;会根据id进行更新&#xff0c;id存在就更新行数据&#xff0c;不存在就添加一行新数据。 解决方案 如何知道id存在还是不存在呢&#xff1f…

记一次CDH集群迁移产生的问题——HIVE

背景 生产环境CDH集群迁移到新的环境&#xff0c;迁移之后使用Hive Client方执行任务一直失败。 问题1&#xff1a;metadata.SessionHiveMetaStoreClient 产生报错&#xff1a; FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.Ru…

AOP操作日志记录

AOP操作日志记录 1.创建注解 Retention(RetentionPolicy.RUNTIME) Target(ElementType.METHOD) public interface PassportLog {String operatePage();String operateType();ClassTypEnum classType();}2.创建切面 对于字典&#xff0c;可以通过注解属性去转换&#xff0c;枚举…

车联网架构设计(二)_消息缓存

在上一篇博客车联网架构设计(一)_消息平台的搭建-CSDN博客中&#xff0c;我介绍了车联网平台需要实现的一些功能&#xff0c;并介绍了如何用EMQXHAPROXY来搭建一个MQTT消息平台。车联网平台的应用需要消费车辆发布的消息&#xff0c;同时也会下发消息给车辆&#xff0c;以实现车…

SpringBoot 属性配置解析

属性配置介绍 spring官方提供的17中属性配置的方式 Devtools全局配置测试环境TestPropertySource注解测试环境properties属性命令行参数SPRING_APPLICATION_JSON属性ServletConfig初始化参数ServletContext初始化参数JNDI属性JAVA系统属性操作系统环境变量RandomValueProperty…

解释区块链技术的应用场景和优势。

区块链技术的应用场景&#xff1a; 金融行业&#xff1a;区块链可用于加强支付、结算、借贷和保险等金融业务的安全性和效率。 物流行业&#xff1a;区块链可用于追踪物流信息&#xff0c;保证货物的安全、可靠和透明。 版权保护&#xff1a;区块链可用于储存数字资产和版权信…

Nacos和Eureka冲突问题原因分析

目录 一、问题现象二、解决办法三、原因分析 一、问题现象 Description:Field autoServiceRegistration in org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationAutoConfiguration required a single bean, but 2 were found:- eurekaAutoServiceRegis…

单例模式【C#】

只能生一个儿子。 文件操作只能一个单例去操作。 1static&#xff1a; static的特点是&#xff0c;不需要new就能使用。即使派生了&#xff0c;也是使用静态的对象。 public class SingleObject {//创建 SingleObject 的一个对象private static SingleObject instance new…

基于OpenCV+CNN+IOT+微信小程序智能果实采摘指导系统——深度学习算法应用(含pytho、JS工程源码)+数据集+模型(二)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境TensorFlow 环境Jupyter Notebook环境Pycharm 环境微信开发者工具OneNET云平台 相关其它博客工程源代码下载其它资料下载 前言 本项目基于Keras框架&#xff0c;引入CNN进行模型训练&#xff0c;采用Dropout梯度…

spark log4j日志配置

1.spark启动参数 先把log4j配置文件放到hdfs&#xff1a;hdfs://R2/projects/log4j-debug.properties --conf spark.yarn.dist.fileshdfs://R2/projects/log4j-debug.properties#log4j-first.properties \ --conf "spark.driver.extraJavaOptions-Dlog4j.configurationf…

【前端设计模式】之单例模式

在前端开发中&#xff0c;单例模式是一种常见的设计模式&#xff0c;用于确保一个类只有一个实例&#xff0c;并提供全局访问点。在实现单例模式时&#xff0c;有一些最佳实践和高级技巧可以帮助我们编写更优雅和可维护的代码。 1. 使用闭包 使用闭包是实现单例模式的一种常见…