Django 框架
文章平均质量分 84
Django
XWenXiang
相信奇迹的人,本身就和奇迹一样了不起
展开
-
跨域问题详解
跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制。浏览器从一个域名的网页去请求另一个域名的资源时,出现域名、端口、协议不同,都属于跨域。例如在 127.0.0.1:8000 去请求 127.0.0.1:8888 的资源同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现请求原创 2022-07-06 19:47:36 · 666 阅读 · 0 评论 -
Django DRF JWT 认证
首先大致了解一下什么是 TokenToken 是一种客户端认证机制、令牌,是一个经过加密的字符串,安全性强,支持跨域用户第一次登录,服务器通过数据库校验其用户名和密码是否合法,则再生成一个token串,服务端会返回Token给前端,前端可以在每次请求的时候带上Token证明自己的合法地位Token 的生成一般是采用uuid保证唯一性,当用户登录时为其生成唯一的token,存储一般保存在数据库中Json Web Token 简称 JWT,其本质就是 token 认证机制。JWT 就是一段字符串,由三段信息构原创 2022-06-23 22:54:06 · 806 阅读 · 0 评论 -
Django DRF 分页
REST framework提供了分页的支持,内置的分页器需要继承 GenericAPIView 和 ListModelMixin,对查询所有接口进行分页。1. 可以自己继承 PageNumberPagination 设置属性,如下示例属性解释page_size每页数目page_query_param前端发送的页数关键字名,默认为”page”page_size_query_param前端发送的每页数目关键字名,默认为Nonemax_page_size前端最多能原创 2022-06-23 20:41:56 · 1063 阅读 · 1 评论 -
Django DRF 自动生成接口文档
前端请求的url由谁来写url 主要有后台来写,写完给前端;如果后台查询数据,需要借助查询条件才能查询前端需要的数据时后台会要求前端提供相关的的查询参数,这里查询的参数就是url请求的参数;参数前面用 连接 , 几个参数中间 号连接;接口文档主要由谁来写接口文档主要由后台开发者来设计修改。前端开发者起到了辅助的作用;因为直接跟数据打交道的就是后台,后台是最清楚,数据库里面有什么数据,能返回什么数据前端只是接口文档的使用者,使用过程中,发现返回的数据不对,则需要跟后台进行商量,由后台来修改;前端不要随意更改原创 2022-06-22 19:57:25 · 2022 阅读 · 0 评论 -
Django DRF 全局异常处理
其异常返回的格式已经在 DRF 配置文件中配置了,但是并不符合我们的要求,我们可以重写其方法,看源码可以发现其执行了 handle_exception 方法,该方法源码如下上面俩句源码说明处理的是 get_exception_handler 方法,查看其源码如下在 get_exception_handler 方法中返回异常处理程序。这里默认返回的是 settings 下的 EXCEPTION_HANDLER 如下所示也就是说,我们只要重写 exception_handler原创 2022-06-22 18:45:03 · 1377 阅读 · 2 评论 -
Django DRF 排序、过滤
排序只在查询所有的功能接口中使用,对查询的结果进行排序(升序、降序)导入语句:使用接口路由中使用,如下示例2. 过滤过滤是指查找出符合指定要求的数据。该内置的过滤是模糊查询,但是不能指定查询字段,导入语句:使用接口路由中使用,如下示例DjangoFilterBackend 第三方过滤器该过滤器属于第三方过滤器,需要手动下载:下载好后导入语句:使用接口路由中使用,如下示例自定义过滤器除了以上的过滤器还可以自定义过滤器,编写自己的逻辑。...原创 2022-06-22 09:58:19 · 642 阅读 · 0 评论 -
Django DRF 认证、权限、频率
在前面说的 APIView 中封装了三大认证,分别为认证、权限、频率。认证即登录认证,权限表示该用户是否有权限访问接口,频率表示用户指定时间内能访问接口的次数为了方便举例说明,事先定义好模型表2. 认证2.1 自定义认证自定义登录认证可以生成随机字符串,并添加进 UserToken 表中,每一次登录都会生成,若该字符串已存在则更新,不存在则新建。登录视图函数自定义认证表需要创建认证类,首先继承拓展 BaseAuthentication导入语句:自定义认证类2.1.1 全局使用在配置文件中添加配原创 2022-06-21 21:29:36 · 846 阅读 · 0 评论 -
Django DRF 路由组件
使用视图集时,除了可以自己手动在 as_view() 中添加字典来指明请求方式与动作 action 之间的对应关系外,还可以使用 Routers 来帮助我们快速实现路由信息。REST framework 提供了两个 router导入语句:使用方法使用的方法:prefix: 该视图集的路由前缀viewset: 视图集,可以是视图类名base_name: 路由别名的前缀此时打印 路由如下示例需要将该路由添加到 中,有俩种方式方法一,将俩个列表相加方法二,使用 inclu原创 2022-06-18 23:29:22 · 409 阅读 · 0 评论 -
Django DRF 视图集
继承自 APIView 与 ViewSetMixin,作用也与 APIView 基本类似,提供了身份认证、权限校验、流量管理等。ViewSet 主要通过继承 ViewSetMixin 来实现在调用 时传入字典(如{‘get’:’list’})的映射处理工作。在ViewSet中,没有提供任何动作 action 方法,需要我们自己实现 action 方法。源码如下使用ViewSet通常并不方便,因为 list、retrieve、create、update、destory 等方法都需要自己编写由于使用 Vie原创 2022-06-17 23:41:08 · 461 阅读 · 0 评论 -
Django DRF 视图子类
DRF 提供了 9 个视图子类,分别为 ListAPIView、CreateAPIView、ListCreateAPIView、UpdateAPIView、DestroyAPIView、RetrieveAPIView、RetrieveDestroyAPIView、RetrieveUpdateDestroyAPIView、RetrieveUpdateAPIView导入语句继承自:GenericAPIView、ListModelMixin。该视图字类提供 get 方法使用 ListAPIView 查看所有(部分原创 2022-06-17 21:23:15 · 295 阅读 · 0 评论 -
Django DRF 视图拓展类
在视图基类文章中的 5 个接口虽然可以继承 GenericAPIView 基类,但执行的代码还是繁琐。可以使用几种后端视图(对数据资源进行曾删改查)处理流程的实现,减少代码的编写量注意点:导入语句:列表视图扩展类,提供方法快速实现列表视图,返回200状态码。使用该方法可以代替接口中查询所有的功能代码使用 ListModelMixin 实现查询所有(部分代码)查看源码3. CreateModelMixin创建视图扩展类,提供方法快速实现创建资源的视图,成功返回201状态码。如果序列化器对前端发送的数据验原创 2022-06-17 20:32:45 · 218 阅读 · 0 评论 -
Django DRF 视图基类
Django REST framwork 提供了众多的通用视图基类与扩展类,以简化视图的编写。REST framework 提供的视图的主要作用有:在此之前需要注意的是,DRF 是一个 app,也需要在配置文件中注册。2. 视图基类2.1 APIViewAPIView 是 REST framework 提供的所有视图的基类,继承自 Django 的 View 父类。导入语句: 通过对 cbv 源码和 drf 源码的分析可以了解其大致原理。as_view() 函数主要内容dispatc原创 2022-06-17 19:21:00 · 410 阅读 · 1 评论 -
Django DRF 请求与响应
REST framework 传入视图的request对象不再是Django默认的HttpRequest对象,而是REST framework提供的扩展了HttpRequest类的Request类的对象。REST framework 提供了Parser解析器,在接收到请求后会自动根据Content-Type指明的请求数据类型(如JSON、表单等)将请求数据进行parse解析,解析为类字典[QueryDict]对象保存到Request对象中。Request对象的数据是自动根据前端发送数据的格式进行解析之后的结原创 2022-06-16 22:13:07 · 523 阅读 · 0 评论 -
Django DRF 序列化类
不使用 Serializer 序列化创建视图函数路由不使用 Serializer 序列化会比较繁琐。models.py需要先建立一个模型类urls.pyserializer在应用下新建任意名字文件例如 serializer.py 文件,在文件中导入刚才建立的表并导入 serializers,根据表中字段创建序列化类,序列化的字段可以自定义views.py创建好序列化类后导入到视图函数中使用。1.2 定义序列化类在基础使用可以看出,定义序列化类需要先创建模型表,如下简易表D原创 2022-06-16 09:18:52 · 1519 阅读 · 0 评论 -
Django DRF铺垫
目前主流的 Web 开发模式有两种,分别是:API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。API除了有应用“应用程序接口”的意思外,还特指 API的说明文档,也称为帮助文档。微博开放 API 接口前端请求的url由谁来写url 主要有后台来写,写完给前端;如果后台查询数据,需要借助查询条件才能查询前端需要的数据时后台会要求原创 2022-06-13 21:15:59 · 351 阅读 · 0 评论 -
Django 用户权限
用户权限,指的是一个帐户登录后,有些功能可以使用,有些功能无法使用,这就是管理员对其设置的权限,只有附合权限的人才可以使用对应的功能。权限就是权利的限制范围。比较常见的是VIP用户和非VIP用户之间的权限差距。用户的权限其实也可以理解为用户对路由访问的权限。我们设定一个用户不能访问某一个路由就相当于限制了用户的权限。那么如何限制用户访问路由,可以创建一个用户可以访问的路由表,查看用户请求的路由是否在该列表内即可。由于用户的数量很多,不能直接将用户和路由对应,可以创建一张用户身份表,表示某一个用户能访问的路由原创 2022-06-03 12:38:10 · 6225 阅读 · 3 评论 -
Django Settings配置文件夹简介
Django settings文件中提供了很多配置使用,具体位置如下所示,在项目同名文件夹下。在其中添加想要的配置即可2. settings 文件常见配置(2.1) app路径该配置可以对项目中的app进行注册,使用pycharm创建Django项目额外创建的app自动注册,如上图所示。其余需要手动注册,如下示例(2.2) 数据库配置数据库默认使用的是自带的sqlite3,其配置如下,我们可以指定数据库,这里以MySQL为例除了在settings文件中配置外,还需要在项目同名的文件夹下的文件原创 2022-06-02 22:33:12 · 1708 阅读 · 0 评论 -
Django Auth模块
文章目录1. Auth 模块简介2. Auth 模块方法(2.1) createsuperuser(2.2) auth.authenticate()(2.3) auth.login(HttpRequest, user)(2.4) request.user.is_authenticated()(2.5) 登录装饰器logout(request)request.user.check_password()request.set_password(password)、request.user.save()1. A原创 2022-05-26 09:08:24 · 911 阅读 · 0 评论 -
Django 基于中间件思想编写项目
文章目录1. 引子2. importlib 模块3. 功能的插拔式设计1. 引子1. Django的settings配置文件中的中间件编写方式如下所示 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMidd原创 2022-05-25 19:59:56 · 135 阅读 · 0 评论 -
Django 中间件简介
文章目录Django 中间件简介Django 自定义中间件process_requestprocess_responseDjango 中间件简介官方解释称中间件是一个用来处理Django的请求和响应的框架级别的钩子。它是一个轻量、低级别的插件系统,用于在全局范围内改变Django的输入和输出。每个中间件组件都负责做一些特定的功能。但是由于其影响的是全局,所以需要谨慎使用使用不当会影响性能。简单来说中间件是在视图函数执行之前和执行之后做的一些额外操作,它本质上就是一个自定义类,类中定义了几个方法,原创 2022-05-25 12:11:12 · 901 阅读 · 0 评论 -
Django Ajax
文章目录AJAX简介AJAX常见应用情景简易使用前后端传输数据编码格式ajax发送json格式数据ajax携带文件数据AJAX简介1. AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步的Javascript和XML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML)。2. AJAX 不是新的编程语言,而是一种使用现有标准的新方法。3. AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服原创 2022-05-24 21:16:26 · 312 阅读 · 0 评论 -
Django cookie与session简介
文章目录cookie 简介cookie 简介原创 2022-05-24 21:04:35 · 752 阅读 · 0 评论 -
Django Form组件
文章目录Form 组件form 所有内置字段及其属性Form 组件Django Form 组件用于对页面进行初始化,生成 HTML 标签,此外还可以对用户提交对数据进行校验。form组件的主要功能如下:生成页面可用的HTML标签对用户提交的数据进行校验保留上次输入内容创建类使用 form 组件需要进行导入,导入的语句是: from django import forms使用时需要在views.py中定义一个类,类中定义了用户输入的字段,大致结构如下 # 需要继承Form类原创 2022-05-24 14:28:07 · 727 阅读 · 1 评论 -
Django 批量操作数据以及分页器
文章目录1. 批量操作数据bulk_create 方法2. 分页器推导1. 批量操作数据在操作大批数据的时候,例如在数据库表中插入大批量的记录时,可以使用该方法减少运行时间,首先可以尝试直接插入多条数据,如下所示urls.pyfrom django.conf.urls import urlfrom app01 import viewsurlpatterns = [ url(r'^get_book/',views.get_book)]models.pyfrom django.db im原创 2022-05-21 14:18:42 · 768 阅读 · 0 评论 -
Django框架
文章目录Django文件解析Django文件解析mysite/ manage.py mysite/ __init__.py settings.py urls.py asgi.py wsgi.py 1. 外层的mysite/目录与Django无关,只是你项目的容器,可以任意重命名。2. manage.py:一个命令行工具,管理Django的交互脚本。3. 内层的mysite/目录是真正的原创 2022-05-19 21:26:51 · 1626 阅读 · 0 评论 -
自定义搭建简易web框架
文章目录1. web框架介绍2. HTTP协议3. 自定义框架框架雏形进阶路由优化代码4. wsgiref 模块5. 优化结构6. jinja2模块1. web框架介绍我们可以将所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端。 这样我们就可以自己实现Web框架了。2. HTTP协议而服务端和客户端通信时都需要符合一个统一的规则,就是HTTP协议(超文本传输协议),其是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消原创 2022-05-10 21:03:15 · 1569 阅读 · 0 评论