【补充】1-auth的使用、扩写auth的user表、django支持缓存

1 Auth的使用
1.1 扩写auth的user表
2 缓存

1 Auth的使用

  # django 的一个app---》用户的登录,退出,注册。。。# 配置文件中配置:---》表会被迁移INSTALLED_APPS = ['django.contrib.auth',]# auth有哪些表---权限控制:-Permission:auth_permission-Group:auth_group-User:auth_user  --->密码加密---auth_group_permissions-auth_user_groups-auth_user_user_permissions# 目前阶段只用 auth_user来做用户的一些操作# 如果用户没登录request.user取出的是匿名用户:AnonymousUser类的对象---》也有pk,name,is_authenticated# auth的登录操作-1 user = authenticate(username='usernamer',password='password')-2 login:用户校验通过,让它登录,执行它-当前登录用户写入到session中-后续 request.user 就能拿到当前登录用户-3 logout:退出---》清空session-4 request.user.is_authenticated   返回TrueFalse-5 login_requierd :登录认证装饰器---》放在视图函数上 @login_required(login_url='/login/')-6 create_user:普通用户-User.objects.create()--密码是加密的---》这样存密码是明文的-7 create_superuser:超级用户  python38 manage.py createsuperuser-8 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中权限最高# 校验用户:必须传username和passworduser = authenticate(username='usernamer',password='password')from django.contrib.auth.models import Useruser=User.objects.filter(username=username).first()if user and user.check_password(password):print('用户名密码正确')else:print('用户名密码错误')# auth模块的密码加密--同样的密码--》再次加密--》密文也不一样# 如何实现?pbkdf2_sha256$   # 加密方式 260000$           #过期时间H93ubuUFw6FbYc6B8ojzKA$ # 随机串,,秘钥H0ZnaiJOm/pI4K802Y2TcO5SQ7iWDcx5E+mb/hdABd8= #明文加密后的# 后期如果你自己写了User表,但是想用人家的密码加密,就可以使用 -res=make_password('123456')-check_password(明文,密文)

1.1 扩写auth的user表

# 第一种方案:通过一对一扩展
from django.contrib.auth.models import User
class UserDetail(models.Model):user=models.OneToOneField(to=User)phone=models.CharField(max_length=32)# 第二种:通过继承 AbstractUser表来扩写-1 在models.py中写 用户表from django.contrib.auth.models import AbstractUserclass UserInfo(AbstractUser):# 原来有的字段就不需要写了,只需要扩写你想写的字段mobile=models.CharField(max_length=32)icon=models.ImageField(upload_to='/icon/',default='default.png')-2 在settings.py 配置AUTH_USER_MODEL='app01.UserInfo'-3 之前不要迁移数据,一旦迁移过,就不行了-一旦迁移过了,按这个步骤操作-1 删库-2 删迁移文件(所有你写的app都删)-3 删除源码中 auth和admin的迁移文件---》卸载djagno重装

2 缓存

# 页面静态化---
# 缓存---》本身数据在数据库中---》如果访问量较大---》每次都需要去数据库查询---》影响效率---》我们可以对数据做缓存--》以后先从缓存中取数据--》如果取到直接返回---》不需要查数据库---》如果取不到---》再查数据库---》查完放到缓存中# django 默认就支持缓存---》缓存到的位置内存缓存(演示)文件缓存 数据库缓存redis缓存# 默认情况,缓存到内存中
CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',}
}# 缓存到文件中
CACHES = {'default': {'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', #指定缓存使用的引擎'LOCATION': 'D:\Python\django_05\cache',        #指定缓存的路径'TIMEOUT':300,              #缓存超时时间(默认为300秒,None表示永不过期)'OPTIONS':{'MAX_ENTRIES': 300,            # 最大缓存记录的数量(默认300)'CULL_FREQUENCY': 3,           # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)}}   
}# 缓存的具体使用---》三种粒度-1 全站缓存---》只需要配置两个中间件即可-2 视图缓存-3 局部缓存---》在页面某个位置缓存#####  全站缓存,使用方式-如下-只需要配置中间件即可
MIDDLEWARE = ['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})###局部缓存####
{% load cache %}
{% cache 10 'name' %}
可以能有很多代码
{% endcache %}

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

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

相关文章

更深层次理解传输层两协议【UDP | TCP】【UDP 缓冲区 | TCP 8种策略 | 三次握手四次挥手】

博客主页:花果山~程序猿-CSDN博客 文章分栏:Linux_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长! 目录 再谈端口号 端口号的返回…

ML system 入坑指南

ML system 入坑指南 | 摸黑干活 最近ChatGpt大火,越来越多开始关注大模型2,但对于大模型落地而言,除了先进的算法,其背后的MLsystem(机器学习系统), 从分布式训练到高效推理的完整链路同样重要, 好的基础设施是应用爆发的基础. 作为一个入坑MLsys快两年半的练习生, 本文主要围…

jsp驾校管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 驾校管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统采用serlvetdaobean mvc 模式,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发…

C#面:ASP.NET 的身份验证方式有哪些

C# ASP.NET 提供了多种身份验证方式,常用的有以下几种: Forms 身份验证:Forms 身份验证是 ASP.NET 中最常用的身份验证方式之一。它基于 cookie来跟踪用户的身份认证状态。在 Forms 身份验证中,用户在登录页面输入用户名和密码后…

解码Starknet Verifier:深入逆向工程之旅

1. 引言 Sandstorm为: 能提交独立proof给StarkWare的Ethereum Verifier,的首个开源的STARK prover。 开源代码见: https://github.com/andrewmilson/sandstorm(Rust) L2Beat 提供了以太坊上Starknet的合约架构图&…

单机多GPU的训练及debug中vscode下launch.json内容设置

1.预配置 Local_rank:当前机子上的第几块GPU。这里设置为-1,后续多线程自动分配显卡。 Cuda_visible_devices:指定分配资源到几块显卡上,这里‘0,1,2,3’就是这四张gpu的id。 os.environ[LOCAL_RANK] -1 os.enviro…

rust可变全局静态数组用法

extern crate alloc; use alloc::vec::Vec; use core::mem::ManuallyDrop; use log::info; use uefi::println; pub static mut gbuf:&static mut [i32] &mut [0; 0x1000]; pub fn testdumphex() -> i32 { info!(“testdumphex!”); let mut hexvec Vec::new();…

农村公交与异构无人机协同配送优化

针对农村公交与异构无人机协同配送的优化问题,可以从以下几个方面进行探讨: 1. 融合公交与无人机配送 公交物流体系:利用农村公交网络,建立以公交车辆为基础的物流配送体系。公交车辆可以沿途收集或投递货物,提高物流配送效率。无人机辅助配送:在公交物流体系的基础上,…

Linux学习系列文件管理之输出与重定向

在 Linux 中有三个经常用到的输入输出流,他们分别是: 标准输入(stdin)标准输出(stdout)标准错误(stderr) 在 Linux 系统中,系统保留了 0(标准输入&#xff…

C语言/数据结构——每日一题(反转链表)

一.前言 大家好!今天又是每日一题环节。今天我为大家分享了一道单链表题——反转链表。 废话不多说,让我们直接进入正题吧。 二.正文 1.1题目信息 这是一道leetCode上面的一道题:https://leetcode.cn/problems/reverse-linked-list 1.2解…

2.2 Java全栈开发前端+后端(全栈工程师进阶之路)-前端框架VUE3-基础-Vue基本语法

文本渲染指令 文本渲染指令-v-html与v-text Vue使用了基于HTML的模板语法,允许开发者声明式地将DOM绑定至底层Vue实例的数据。所有Vue的模板都是 合法的HTML,所以能被遵循规范的浏览器和HTML解析器解析。 在前面,我们一直使用的是字符串插…

Java面试八股之强软弱虚引用的概念及区别

Java中强软弱虚引用的概念及区别 在Java中,强引用、软引用、弱引用和虚引用是四种不同类型的引用,它们在对象生命周期管理、垃圾收集(Garbage Collection, GC)以及内存管理方面有着不同的行为和用途。以下是它们的概念和主要区别…

Java 中的自定义排序实现方法

文章目录 Java 中的自定义排序实现方法1. 使用自定义比较器对数组进行排序1.1 实现Comparator接口1.2 使用Arrays.sort()方法1.3 匿名内部类1.4 代码结果 2. 使用自定义比较器对集合进行排序2.1 实现Comparable接口2.2 使用Collections.sort()方法2.3 使用Lambda表达式2.4 代码…

2.Neo4j的搭建启动

Graph Database 图数据库 版本对应关系 官网都是高版本,推荐使用下载地址可以找到社区老版本: https://we-yun.com/doc/neo4j/ neo4j.bat 启动脚本 cypher-shell.bat 执行CQL语句的。 import文件夹可以放入excel,csv等数据文件,导入到…

llamaindex 中GPTVectorStoreIndex 和 VectorStoreIndex区别

在 llama_index 库中,GPTVectorStoreIndex 和 VectorStoreIndex 都是用于创建向量存储索引的类,但它们在某些方面有所不同。 底层模型: GPTVectorStoreIndex 使用 GPT (Generative Pre-trained Transformer) 模型来生成文本的向量表示。它利用 GPT 模型的上下文理解能力来捕获…

多模态大语言模型和 Apple 的 MM1

原文地址:multimodal-large-language-models-apples-mm1 2024 年 4 月 13 日 抽象是计算机科学中最关键的概念之一,具有一些最强大的影响。从简单的角度来看,抽象就是将某一事物应用于多种不同情况的能力。例如,如果你创造了一种…

本地大语言模型LLM的高效运行专家 | Ollama

Ollama简介 Ollama是一个开源的大型语言模型服务工具,它帮助用户快速在本地运行大模型。通过简单的安装指令,用户可以执行一条命令就在本地运行开源大型语言模型,如Llama 2。Ollama极大地简化了在Docker容器内部署和管理LLM的过程&#xff0…

JAVA面试专题-微服务篇

Spring cloud Spring Cloud 5大组件有哪些 注册中心/配置中心:nacos 负载均衡:Ribbon 服务远程调用:Feign 服务保护:sentinel 服务网关:Gateway 微服务注册和发现 nacos和eureka的区别 负载均衡 微服务向Ribbon发送…

基于Spring Boot的校园疫情防控系统设计与实现

基于Spring Boot的校园疫情防控系统设计与实现 开发语言:Java框架:springbootJDK版本:JDK1.8数据库工具:Navicat11开发软件:eclipse/myeclipse/idea 系统部分展示 管理员登录首页界面图,管理员进入校园疫…

Android --- 消息机制与异步任务

在Android中,只有在UIThread(主线程)中才能直接更新界面, 在Android中,长时间的工作联网都需要在workThread(分线程)中执行 在分线程中获取服务器数据后,需要立即到主线程中去更新UI来显示数据, 所以,如…