自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(104)
  • 收藏
  • 关注

原创 DRF 权限介绍

RBAC,全称Role-Based Access Control,即基于角色的访问控制,是一种广泛应用于各种系统中的权限控制策略。其核心思想是将权限分配给角色,再将角色分配给用户,从而实现对系统资源的有效管理和安全控制。在RBAC中,用户通过角色与权限进行关联,一个用户拥有若干角色,每一个角色拥有若干权限,这样就构造成“用户-角色-权限”的授权模型。在 Django 中,权限是自动根据模型(Model)来定义的。当你创建一个模型时,Django 会为这个模型创建三个默认的权限:添加、修改和删除。

2024-04-26 20:30:43 565

原创 DRF JWT认证进阶

实际的案例中,登录的方式有很多种,既可以是用户名,还可以是手机号,还可以是邮箱等,并且他们的登录输入入口都是一个,所以这里将实现这种接口用户表用普通的表创建一个数据表用于侧式认证功能username = models.CharField(max_length=64, verbose_name='用户名')password = models.CharField(max_length=64, verbose_name='密码')

2024-04-26 20:29:53 1266

原创 DRF JWT认证基础

编码s:要编码的字节串(bytes类型需要是bytesstr不行返回:编码后的字节串。解码s:要解码的base64编码的字节串。长度如果不是4的倍数,后面补等号返回:解码后的原始字节串。模型表:自定义一个普通的user表username = models.CharField(max_length=64, verbose_name='用户名')password = models.CharField(max_length=64, verbose_name='密码')路由层。

2024-04-24 08:41:07 764

原创 DRF 接口文档

在Django的表模型(Model)或Django REST framework的序列化类(Serializer)的字段上,我们可以添加一个help_text属性来为接口文档提供字段的介绍信息。这样做可以帮助开发者更好地了解每个字段的用途、格式要求以及可能的取值范围,从而提高接口的可读性和易用性。

2024-04-24 08:39:01 291 1

原创 DRF 异常处理源码分析

无论是DRF的异常还是Django的异常,甚至是Python的异常都应该统一返回一个格式,告诉前端具体的异常原因记录日志信息:当前的请求方式,请求的地址,哪个视图抛出的异常,用户的首先这个方法必须要有两个参数exc和content因为通过源码分析,触发异常会将这两个参数,传递给自定义方法中,所以必须要有两个参数来接收可以从context中获取request、view等,之后一些信息记录都可以再这里拿到。

2024-04-23 16:58:35 741

原创 DRF 查询(排序、过滤、分页)

在restful规范中,有提到查询地址中可以带条件,默认排序条件是pk即:表示按照价格从低到高排序表示按照价格从高到低排序表示价格从低到高,同价格的情况下,在名字以低到高排序自定义的难度虽然大,但是这确实使用最多的需要写的类继承重写方法并返回过滤以后的queryset对象这里以价格或者书名进行过滤,可以两个同时给,可以不给,可以指定一个书名模糊匹配,价格是指定价格# 两个参数都有# 只用价格# 只用书名elif name:# 视图层示例二:只按照价格过滤,但是价格是一个区间。

2024-04-23 16:57:34 1364

原创 DRF 三大认证

三大认证之首,只有通过这个认证才会进行两外两个认证认证组件用于确定请求是来自谁。例如,它可以检查一个请求是否附带了一个有效的用户会话token,从而识别出请求的用户。三大认证的第二个,到这里说明已经通过了认证组件权限组件用于确定已认证的用户是否有权限执行某个操作。例如,一个API视图可能只允许特定的用户组或具有特定权限的用户访问。三大认证的最后一个,到这里说明已经通过了认证和权限组件权限组件用于确定已认证的用户是否有权限执行某个操作。例如,一个API视图可能只允许特定的用户组或具有特定权限的用户访问。

2024-04-22 18:59:02 826

原创 面向对象目录总结

【零】思维导图【一】初识面向对象Python 初识面向对象-CSDN博客【二】面向对象-封装Python 面向对象之封装和装饰器property_面向对象python封装property-CSDN博客【三】面向对象-继承Python 面向对象之继承和组合_面向对象 组合 继承-CSDN博客【四】面向对象-多态Python 面向对象之多态和鸭子类型-CSDN博客【五】面向对象-绑定和非绑定方法Python 面向对象之绑定和非绑定方法_python 绑定方法-CSDN博客【六】面向对象-

2024-04-22 18:57:06 238

原创 DRF 路由层

action装饰器是一个用于在视图集中添加自定义路由和视图方法的强大工具。detail参数:这个参数决定了该动作是否针对单个实例(True)还是针对集合(False如果,则URL将包含对象的主键,例如。如果,则URL将不包含主键,例如。methods参数:这个参数是一个列表,指定了支持哪些HTTP方法(如['get']['post']['put']等)。url_path参数:这个参数是自定义路由的URL部分,它将附加到视图集的URL上。默认是方法名。

2024-04-21 14:35:16 928

原创 DRF 视图层

前面说着通过继承,可以减少在视图中重复编写的代码量,但是并没有少些多少,这是因为不能只能用五个视图扩展类:新增,实现了create()方法:删除,实现了destroy()方法:更改,实现了update()方法:查询单条,实现了retrieve()方法:查询所有,实现了list()方法mixin类Mixin类是一种常见的设计模式,在多个类之间共享功能或行为时非常有用。Mixin类通常包含一组方法或属性,这些方法和属性可以被其他类通过多重继承方式导入并使用。

2024-04-21 14:34:03 766

原创 DRF 请求与响应

DRF的Response类是专门为构建RESTful API设计的,它不仅仅是一个简单的JSON响应,而是包含了一系列与RESTful API交互有关的功能。内容类型协商:DRF的Response类能够自动处理内容类型协商,根据客户端的请求头(如Accept)来返回适当的媒体类型。渲染器:DRF提供了多种渲染器,可以将响应数据渲染为不同的格式(如JSON、XML等)。Response类会根据请求的内容类型选择适当的渲染器。状态码:DRF的Response。

2024-04-20 09:00:00 535

原创 DRF ModelSerializer序列化类

使用,你可以自动推断字段类型,并快速创建一个序列化器,该序列化器能够处理 Django 模型实例的序列化和反序列化。特点自动字段推断会自动根据 Django 模型中的字段来生成对应的序列化器字段。创建和更新模型实例:除了序列化模型数据,还可以处理创建和更新模型实例的逻辑。可定制性:虽然提供了许多便利,但它也允许你覆盖默认行为,比如自定义字段,添加额外的验证等。model它接受一个Django模型类作为值,用于告诉序列化器该序列化器是基于哪个模型生成的。fields。

2024-04-20 08:45:00 379

原创 DRF 序列化类保存save源码

save中可以给额外参数。

2024-04-19 08:48:12 909

原创 DRF 序列化类serializer多表

但是在序列化类中,如果直接进行合法数据的打散传入是不对的,因为需要传入的是对象,所以需要先将这些数据弹出,然后另外保存外键信息。但是在序列化类中,如果直接进行合法数据的打散传入是不对的,因为需要传入的是对象,所以需要先将这些数据弹出,然后另外保存外键信息。多对多需要需要在序列化层中使用ListField,一对多需要在序列化层中使用DictField。在这个例子中,一本书的创建,需要考虑到多个外键字段。在这个例子中,一本书的修改,需要考虑到多个外键字段。在序列化类中是可以使用其他序列化类的。

2024-04-19 08:46:58 758

原创 DRF 序列化类serializer单表

这是模型表的字段book_name = models.CharField(max_length=64, verbose_name='书名')book_price = models.DecimalField(max_digits=6, decimal_places=2, verbose_name='价格')publish_name = models.CharField(max_length=64, verbose_name='出本社名字')这是自定义的序列化类。

2024-04-18 08:45:00 541

原创 DRF requets源码分析

这里不对data进行分析,主要是分析如何保留源来的request方法在前面已经对APIView的源码进行分析过了,所以这里也仅对这request进行分析首先通过观察,发现在Request中是没有这个属性的即这个是老版本的request的属性在Django框架中,每个传入的HTTP请求都会由一个对象表示。这个对象包含了很多关于当前请求的信息,其中META属性是一个Python字典,包含了所有可用的HTTP头部信息。META字典中的键都是字符串,但它们的值可能是字符串或列表(如果HTTP头部有多个值)

2024-04-18 08:30:00 1576

原创 DRF 基础知识

简介:Django REST framework(简称DRF)是一个建立在Django基础之上的Web应用开发框架,主要用于快速开发REST API接口应用主要功能:序列化和反序列化:快速根据Django ORM或其他库自动序列化、反序列化,大大简化了数据模型和API之间的转换视图与试图集:提供了丰富的类试图和Mixin扩展类,有助于简化视图的编写工作路由:提供一组灵活的路由器,方便定义API的URL结构,并确保请求的路由准确无误身份认证与权限。

2024-04-17 09:00:00 753

原创 DRF APIView源码分析

DRF的Response类是专门为构建RESTful API设计的。它不仅仅是一个简单的JSON响应,而是包含了一系列与RESTful API交互有关的功能。:DRF的Response类能够自动处理内容类型协商,根据客户端的请求头(如Accept)来返回适当的媒体类型。:DRF提供了多种渲染器,可以将响应数据渲染为不同的格式(如JSON、XML等)。Response类会根据请求的内容类型选择适当的渲染器。:DRF的Response类可以轻松设置HTTP状态码,以表示API请求的成功或失败。:可以使用。

2024-04-17 08:15:00 1400

原创 Django CBV源码分析

self都是最先实例的那个对象无论寻找属性还是方法,首先从自己(实例的或者类的)哪里找。

2024-04-15 16:26:32 888

原创 Scrapy框架 进阶

在Scrapy中,parse方法返回的数据(无论是Item对象还是其他数据结构)会被Scrapy引擎自动迭代、自动迭代、自动迭代,并逐个传递给Pipeline的方法。需要在pipline.py文件中创建一个类当爬虫开始时,这里会执行一些初始化操作例如,可以建立数据库连接、打开文件等spider参数不能少当爬虫结束时,这里会执行一些清理操作例如,可以关闭数据库连接、关闭文件等spider参数不能少每次要保存一个对象时,这个方法会被触发。

2024-04-15 13:22:57 869 1

原创 Scrapy 框架基础

官网:https://docs.scrapy.org/en/latest/topics/commands.html查看全部可用命令的帮助信息,或指定命令的详细信息# 全部命令 scrapy - h # 指定命令详细信息 scrapy 命令 - h全局命令不需要切换至项目文件夹项目命令需要切换至项目文件夹。

2024-04-15 12:00:00 1049

原创 MySQL 多版本共存

已经安装的MySQL 5.7.44。

2024-04-12 18:54:32 728

原创 爬虫 selenium

动作链是一种用于模拟复杂用户交互操作的功能鼠标、键盘操作等导入动作链类ActionChains导入键盘类Keys无头浏览器是一种没有图形界面(GUI)的的网络浏览器他通过在内存中渲染页面,然后将结果发送回请求它的用户或程序来实现对网络的访问,而不会在屏幕上显示网页优点执行速度快、减少干扰、资源消耗低、易于集成、应用范围广缺点不能完全模拟用户真实行为、不适用于需要页面渲染验证的场景、调试困难。

2024-04-10 19:07:07 905

原创 爬虫 xpath基础

xpath全程XML Path Language,即主要用途对比正则表达式。

2024-04-10 19:00:26 517

原创 爬虫 BeautifulSoup模块

导入【3】解析器解析器使用方法特点自带html.parserBeautifulSoup(页面源码,‘html.parser’)简单易用:标准库的一部分,无需安装速度适中:性能不是最快的,但对于大所数常见任务足以功能基础:提供了基本的HTML解析功能,对复杂的HTML或错误会吃力第三方lxmlBeautifulSoup(页面源码,‘lxml’)性能优越:所有python HTML/XML解析器中性能最好的功能丰富:支持Xpath和CSS选择器需要自行导入安装第

2024-04-09 17:04:35 925

原创 Scrapy 爬取m3u8视频

工具是ffmpegindex.m3u8文件开发者模式F12补全路径发起请求广告,可以过滤掉ts文件mp4文件

2024-04-09 17:00:23 2039 3

原创 Python 爬虫基础

有时,API 可能使用自定义的认证机制,而不是基本认证。在这种情况下,可以通过手动设置请求头来提供认证信息:创建一个包含认证信息的字典headers,并将其传递给headers参数这允许发送任何自定义的认证头。token } ' # 假设API使用Bearer token认证 } response = requests . get(url , headers = headers)' # 假设API使用Bearer token认证。

2024-03-28 21:59:51 1772

原创 Django 评论楼创建

评论楼森林广度优先遍历新方法djangoajax

2024-03-28 15:16:57 1284

原创 Django 自定义中间件(IP限制频率、用户权限)

由于中间件要进行权限处理,所以这里将权限保存在session中。在后端的登录逻辑中,根据登录的用户名进行权限查询。理论来说,这个权限需要保存在数据库中。每个人的权限需要在登录以后才能获得。由于不是所有路径都要限制用户访问。由于每次都是直接进入的根路径。首先需要获取到访问的IP地址。所以需要创建一个登录界面。再次循环遍历可访问的地址。到最后的就是没有权限的。获取用户可访问的地址。然后是当前时间的获取。

2024-03-27 19:33:51 1175

原创 Django 中间件

自定义中间件位置可以在项目的根目录或者在应用目录下创建任意名称的文件夹创建py文件py文件的名字也是任意的创建自定义中间件类需要继承MiddlewareMixin混入类版本在 Django 1.10 之前,中间件需要定义一些特定的方法,如等,并且需要继承混入类在 Django 1.10 及之后的版本中,推荐的写法是定义一个只有两个方法(__init__和__call__)的类。print("第一个中间件的process_request")

2024-03-27 12:30:28 1364

原创 Django批量插入和分页器

【代码】Django批量插入和分页器。

2024-03-27 12:29:15 541

原创 Django forms组件

validators自定义一个手机号码检查验证器import reraise ValidationError("手机号格式错误")error_messages={"required": "手机号不能为空"}# 另一个方式RegexValidator(r"^[0-9]+$", "只能输入数字"),RegexValidator(r"^123[0-9]+$", "只接受123开头的电话")钩子函数就是一种在特定事件或者条件发生时,被调用的函数提供了一种创建交互性和动态性行为的方法。

2024-03-27 12:27:53 1219

原创 Django Cookie和Session

cookieCookie是服务器发送到用户浏览器并保存在浏览器上的一块数据他会在浏览器下一次向服务器发送请求时被携带并发送到服务器上sessionSession是另一种保存用户数据的方法,但数据是保存到服务器端的Session通过生成一种叫做Session ID的唯一标识符,保存在cookie中或者通过URL传递,以便在多个请求中可以识别和跟踪用户。

2024-03-27 12:27:02 1259

原创 Django auth模块

还可以为组分配权限。这些权限决定了组的成员可以访问和修改哪些资源。可以查看一个组的成员,或者将用户添加到组中,或者从组中移除用户。在组管理界面,可以查看、创建、修改和删除组。组是一种方便的方式来管理一组有相同权限的用户。视图函数只能被已经登录的用户访问。需要修改配置文件settings。所以需要提前执行迁移数据库命令。新表内不要创建已有的字段。如果用户没有登录,它将。默认数据保存在数据库。

2024-03-27 12:25:32 1717

原创 Django 仿博客园练习

创建FileReader对象获取当前头像数据转换读取文件内容为DataURLFileReader对象调用方法onload实时预览#头像预览# } $("#selectAvatar") . change(() => {#创建FileReader对象# } let fileReader = new FileReader();#读取头像# } let avatarData = $("#selectAvatar") [ 0 ] . files [ 0 ];

2024-03-26 20:30:26 1777

原创 Django视图层

render是Django框架中用于渲染模板并生成最终的响应当需要返回带有动态信息的HTML页面时,可以使用render函数将请求的数据与定义的模板HTML文件结合起来看源码可以发现render函数的底层还是HttpResponseredict函数用于实现网页间的重定向将用户当前的URL引导至另一个URL这个函数没有返回值,而是发送一个HTTP Redirection错误,迫使客户端发送一个新的请求地址查看源码发现底层还是用的HttpResponse前面写的视图层,用的全是FBV。

2024-03-26 09:05:36 1096

原创 Django模型层

子查询(基于对象)正向:.外键字段反向:.外键字段_set(一对一没有反向查询)all():当返回的是多个对象时用,将得到queryset联表查询(基于双下划线)无论是filter还是values等操作都是查询另一张表时,通过双下划线连接外键字段或表名或其他字段只要有外键关系,那么就可以一直查询正向:外键字段__反向:表名__分组查询往往需要配合聚合函数annotate()是用来直接分组查询的方法只要是queryset对象,都可以使用这个方法。

2024-03-26 09:04:26 763

原创 Django模板层

语法字符串切取按照字符来单词切分按照空格来# 字符串{{ value|truncatechars:长度}}# 单词{{ value|truncatewords:长度}}示例# 视图essay_c = "人类文明可能发生技术突变的领域有:物理学、生物学、计算机科学、寻找外星文明。其中寻找外星文明是所有技术领域中变数最大的,一旦发生,其影响力将超过另外三个领域的总和。# 前端# 结果人类文明可能发生技…在应用下创建一个文件夹名字必须是这个在该文件夹下创建任意py文件(文件名字任意。

2024-03-26 09:02:54 1393

原创 Django路由层

正则的分组就是给某一段正则表达式用小括号括起来在 Django 的 URL 配置中,分组是指使用圆括号包围的部分,用于捕获URL的一部分值当我们在Django中构建Web应用程序时,经常需要生成URL以便在模板中进行链接或在视图函数中进行重定向。反向解析:是一种机制,通过该机制可以根据URL模式和视图函数的名称来生成对相应的URLname参数可以理解为起别名后续通过别名获取url地址映射函数语法前端模板语法伪静态是指服务器上通过配置或处理程序的方式,将动态生成的内容以静态文件的形式呈现给用户。

2024-03-26 09:01:08 1249

原创 在django中使用kindeditor出现转圈问题

富文本编辑器kindeditordjango配置文件settings

2024-03-26 08:58:06 733

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除