自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Django之跨域-CORS策略阻止解决方法

一、问题描述前端请求时由于id不一致或者端口不一致,会出现请求被阻止的情况,如下图:二、解决方法1.安装django-cors-headerspip install -i https://pypi.douban.com/simple django-cors-headers2.将corsheaders添加到全局配置文件的INSTALLED_APPS中,尽量放在前面INSTALLED_APPS = [ 'corsheaders', 'django.contrib.admin',

2020-07-29 09:58:16 5827 2

原创 Django之DRF-授权、认证、登录

一、认证1.Browsable API页面认证与JWT认证比较1.Browsable API页面认证指定permission_classes添加rest_framework.urls路由2.Json Web Token认证最常用的认证方式Session认证Token认证Session认证保存在服务端,增加服务器开销分布式架构中,难以维持Session会话同步CSRF攻击风险Token认证保存在客户端跨语言、跨平台拓展性强鉴权性能高JWT1、由三部

2020-07-28 18:17:44 1963

原创 Django之全局配置-ALLOWED_HOSTS、LOGGING及多个子应用管理

一、ALLOWED_HOSTS配置可以使用那些iP或者域名来访问系统默认为空,可以使用127.0.0.1或者localhost,也可以指定ip如果想允许任何ip进行访问,可以设置为*在项目下的settings.py中设置允许任何ip访问ALLOWED_HOSTS = ['*']二、LOGGING配置在django的全局配置文件中进行如下配置LOGGING = { # 版本号 'version': 1, # 指定是否禁用已经存在的日志器 'disable_

2020-07-27 17:21:48 3102

原创 Django之DRF-APIView、View源码对比

前面的文章已经介绍过APIView与View的区别,或者说APIView比View更为强大的地方(文章链接:https://blog.csdn.net/weixin_47454485/article/details/107461486):1.传入到视图方法中的是Request对象,而不是Django的HttpRequest对象2.视图方法可以返回Response对象,自动处理(根据请求头的参数)为符合前端要求的格式3.任何APIException异常都会被捕获到,并且处理成合适的响应信息4.在进行

2020-07-22 15:27:07 336

原创 Django之DRF-一个请求的前世今生

一个请求到底做了什么1.⼀个自定义的视图类继承了APIView(或者是APIView的某个子类),请求进来后,通过路由寻址找到了类视图的as_view()⽅法,既然⾃定义的类视图没有as_view(),那么这个as_view()⼀定是在⽗类中,进⼊APIview的as_view(),仔细⼀看,就是两句关键的:1.调用父类的as_view(),2. 禁用csrftoken2.既然apiview调⽤了⽗类的as_view(),进⼊view的as_view()中⼀探究竟,分析发现,最后就是执⾏了dispa

2020-07-22 11:32:32 156

原创 Django之DRF-生成接口文档和swagger

一、功能简介生成API文档平台自动生成测试代码支持接口测试二、安装coreapi(必须)Pygments(可选)MarkDown(可选三、使用coreapi1.最新版的DRF(>3.10)中,需要在全局配置文件settings.py中添加如下配置,可在DRF中查看版本REST_FRAMEWORK = { # 指定支持coreapi的Schema 'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.

2020-07-21 21:15:13 3245 1

原创 Django之DRF自定义action

一、自定义action使用action装饰器methods,支持的请求方式,为一个列表,默认为[‘get’]detail,必传参数,要处理的是否是详情资源对象(即是否通过url路径获取主键),True表示需要传递主键id,使用通过URL获取的主键对应的数据对象,False表示不需要传递主键id,不使用URL获取主键url_path,指定url路由名称,默认为action名称url_name,指定url的名称,默认为action名称action源码:def action(methods=No

2020-07-21 17:53:55 5420 1

原创 Django之DFR-视图集-Routers路由

先看视图代码:from rest_framework.filters import OrderingFilterfrom rest_framework.response import Responsefrom rest_framework import statusfrom rest_framework import genericsfrom .models import Projectfrom .serializers import ProjectsModelSerializerfrom u

2020-07-21 10:08:15 463

原创 Django之DRF-Concrete Generic Views

上个版本优化的代码:from rest_framework.filters import OrderingFilterfrom rest_framework.response import Responsefrom rest_framework import statusfrom rest_framework.generics import GenericAPIViewfrom .models import Projectfrom .serializers import ProjectsMod

2020-07-20 18:21:43 100

原创 Django之DRF-mixins

一、ListModelMixin提供list(request, *args, **kwargs)方法获取已存在的列表数据(获取多条记录)获取成功,则返回200 OK1.引入方式from rest_framework import mixins2.代码对比本地代码: def get(self, request): qs = self.filter_queryset(self.get_queryset()) page = self.paginate

2020-07-20 17:57:48 683

原创 Django之DRF-GenericAPIView分页查询

一、使用方法1.添加引擎在全局配置settings.py模块的REST_FRAMEWORK字段中配置引擎和指定每页显示的数据条数REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', 'PAGE_SIZE': 5,2.引入方式使用self.paginate_queryset()方法进行分页,需要传一个查询集对象参数,如果没有进行分页,则会返回N

2020-07-20 17:05:54 663

原创 Django之DRF-GenericAPIView排序查询

一、使用方法1.引入方式from rest_framework.filters import OrderingFilter2.添加引擎将OrderingFilter引擎添加到filter_backends列表中,也可以添加到全局filter_backends = [DjangoFilterBackend, OrderingFilter]3.指定排序字段使用ordering_fields指定需要排序的字段部分代码如下:from rest_framework.filters import

2020-07-20 16:22:47 280

原创 Django之DRF-GenericAPIView过滤查询

GenericAPIView为APIView的子类,它拓展了过滤、查询、分页的功能,本章主要介绍过滤的使用方法需要引入的模块from rest_framework.generics import GenericAPIView一、GenericAPIView视图继承GenericAPIView一般要指定queryset类属性,表示当前接口需要使用到的查询集(查询集对象)一般要指定serializer_class类属性,表示当前接口需要使用到的序列化器类在对应的请求方法中,使用self.get

2020-07-20 16:08:42 524

原创 Django之DRF-APIView

前面的文章中介绍的视图都继承View,即序列化后前端展示都是json数据,反序列化(post、put)也以json数据格式输入,这种用法存在很大的局限性,如果前端想以application/x-www-form-urlencoded或者其它的格式输入、或者返回的数据想以html页面的方式展示,这需要使用到另一个视图类,APIView,它对django中的View做了一系列拓展,如:认证、授权、限流和不同请求数据的解析等等APIView与View的不同区别:传入到视图方法中的是Request对象,而不是

2020-07-20 15:14:09 1174 2

原创 Django之serializer-主从表数据关联查询

前面文章介绍的序列化操作只涉及到一张表(主表),本文介绍从表如何展示主表的一些信息,主表如何展示从表信息一、从表展示主表信息1.在子表的所在子应用的模型序列化器类中定义PrimaryKeyRelatedField,返回主表的主键id,类属性名和主表名一致class InterfacesModelSerializer(serializers.ModelSerializer): projects = serializers.PrimaryKeyRelatedField(help_text='所属

2020-07-16 11:57:31 2451 1

原创 Django之serializer-ModelSerializer

一. 模型序列化器和普通序列化器对比没有使用ModelSerializer序列化器时,我们自定义的序列化器类需要添加对应模型类中的很多字段,但是如果添加的字段有成百个,是否也需要一个一个手动添加呢?所以有一种更为简洁的模型序列化器类来帮我们优化框架代码,简化序列化器类中字段的创建普通序列化器类示例:在这里插入代码片...

2020-07-15 17:25:21 1755

原创 Django之serializer-优化类视图

一. create优化在serializer序列化中,我们通过创建序列化器对象的方式地简化了视图函数的代码,前端传入的数据通过反序列化操作进行了各种数据校验,代码如下:from django.http import JsonResponsefrom django.views import Viewimport jsonfrom .models import Projectfrom .serializers import ProjectsSerializerclass ProjectsPag

2020-07-14 15:46:50 485

原创 Django之serializer初始-序列化

序列化与反序列化序列化概念:把对象转换为字节序列的过程称为对象的序列化,通俗来讲:将程序中的一个数据结构类型转化为其它格式,如:将django中的模型类对象转换为json字符串,这个转换过程称之为序列化,场景:当需要给前端返回模型数据时,需要将模型数据进行序列化成需要的格式(数据的输出)反序列化概念:把字节序列恢复为对象的过程称为对象的反序列化,例如:将json字符串转换为django中的模型类对象,这个过程称之为反序列化,场景:当需要将用户请求的数据存储到数据库时,需要使用反序列化(数据的

2020-07-14 14:16:18 638

原创 Django之REST Framework框架介绍

一、基本介绍它是在Django原生代码的基础上进行了二次开发,主要用于构建Restful API,简称为DRF框架或者REST Framework框架二、特性提供了的Serializer序列化器,可以高效地进行序列化与反序列化(输入输出)操作提供了丰富的类视图、Mixin扩展类、Viewset视图集提供了直观的Web API界面多种身份认证和权限认证强大的排序、过滤、分页、搜索、限流等功能可扩展性强,插件丰富三、安装&配置1.安装直接使用pip安装即可pip install

2020-07-14 11:22:58 381

空空如也

空空如也

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

TA关注的人

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