yyz notes yyz notes
首页
  • RBAC权限设计
  • 架构图标设计
  • 账号体系
  • python基础
  • python高级
  • python模块
  • python设计模式
  • python数据结构与算法
  • django
  • django-DRF
  • flask
  • 直接设计开源pip包
  • 直接设计开源项目
  • python示例题/脚本
  • python面试题
  • golang基础
  • golang高级
  • golang常用组件
  • gin框架
  • es6
  • javascript
  • react
  • vue
  • TypeScript
  • mysql
  • redis
  • minio
  • elasticsearch
  • mongodb
  • 消息队列
  • 自动化测试
  • 操作系统

    • linux
    • windows
  • nginx
  • docker
  • k8s
  • git
  • ldap
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

益章

可乐鸡翅
首页
  • RBAC权限设计
  • 架构图标设计
  • 账号体系
  • python基础
  • python高级
  • python模块
  • python设计模式
  • python数据结构与算法
  • django
  • django-DRF
  • flask
  • 直接设计开源pip包
  • 直接设计开源项目
  • python示例题/脚本
  • python面试题
  • golang基础
  • golang高级
  • golang常用组件
  • gin框架
  • es6
  • javascript
  • react
  • vue
  • TypeScript
  • mysql
  • redis
  • minio
  • elasticsearch
  • mongodb
  • 消息队列
  • 自动化测试
  • 操作系统

    • linux
    • windows
  • nginx
  • docker
  • k8s
  • git
  • ldap
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • python基础

  • python高级

  • python模块

  • python设计模式

  • python数据结构与算法

  • django

  • django-DRF

    • win环境快速搭建drf项目
    • DRF介绍及快速使用
      • 1. 介绍
        • 特点
      • 2. 项目搭建快速使用
        • 2.1 安装
        • 2.2 settings.py配置
        • 2.3 可浏览 API
        • 2.4 快速入门
        • 1. 目录结构
        • 2. 基本使用步骤
    • 序列化
    • DRF请求和响应
    • DRF类视图
    • 认证
    • 权限
    • 接口访问控制(限流)
    • 版本
    • 分页
    • 解析器
    • 自定义异常格式
    • 自定义响应格式
    • 过滤
    • 搜索
    • 排序
  • flask

  • 自己设计开源pip包

  • 自己设计开源项目

  • python小示例

  • python面试题

  • python
  • django-DRF
YiZhang-You
2023-05-20
目录

DRF介绍及快速使用

# 1. 介绍

# 特点

  • 提供了定义序列化器serializer的方法,可以快速根据Django ORM或者其他库自动序列化/反序列化。
  • 提供了丰富的类视图、Mixin扩展类、简化视图的编写。
  • 丰富的定制层级: 函数视图、类视图、视图集合到自动生成API,满足各种需求。
  • 多中身份认证和权限认证方式的支持。
  • 内置了限流系统。
  • 直观的API web界面
  • 可扩展性, 插件丰富

# 2. 项目搭建快速使用

# 2.1 安装

# 根据版本
pip install -i https://pypi.douban.com/simple djangorestframework==3.8.2
# 直接安装
pip install -i djangorestframework

# 安装完后一定要在settings.py中配置
1
2
3
4
5
6

# 2.2 settings.py配置

INSTALLED_APPS =[  
    ''''''
    'rest_framework'
]
1
2
3
4

# 2.3 可浏览 API

如果您打算使用可浏览 API,您可能还想添加 REST 框架的登录和注销视图。将以下内容添加到您的根urls.py文件中。

urlpatterns = [
    ...
    path('api-auth/', include('rest_framework.urls'))
]
1
2
3
4

# 2.4 快速入门

# 1. 目录结构

-drf_test   #项目名
    -app01
        ...
        -models.py    #存放模型类
        -
        -serializers.py  #!!!新建,序列化我们的模型类(为了规范新建一个专门存放序列化的文件)
        -tests.py
        -views.py   #存放视图
    -drf_test
        -__init__.py
        -settings.py   # INSTALLED_APPS = [...,'rest_framework',...]
        -urls.py   #注册路由
        -wsgi.py
    -manage.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 2. 基本使用步骤

  • 初始化模型类

models.py

from django.db import models
 
class Group(models.Model):
    name = models.CharField(verbose_name='小组名字', max_length=100)
  
  def __str__(self):
    return self.name
 
class Student(models.Model):
    name = models.CharField(verbose_name='学生名字', max_length=100)
    age = models.IntegerField(verbose_name='学生年龄')
    group = models.ForeignKey(to=Group, on_delete=models.CASCADE)  #小组和学生之间是 一对多关系
1
2
3
4
5
6
7
8
9
10
11
12
# 迁移模型类python manage.py makemigrationspython manage.py migrate
1
  • 序列化模型类

新建一个serializers.py

序列化:把模型数据转成可传输的数据,叫序列化。(输出)

反序列化:把可传输的数据转成模型数据,叫反序列化。(输入)

from .models import Student,Group
from rest_framework import serializers
 
class StudentSerializer(serializers.HyperlinkedModelSerializer):  #HyperlinkedModelSerializer 用的是超链接的序列化
    class Meta:
        model = Student #需要序列化类
        fields = ('id', 'name', 'age', 'group')  #需要序列化的属性,属性是在 序列化类中的,这里就是Student中的字段,group是外键,一样可以加。
 
 
class GroupSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Group
        fields = ('id', 'name')
1
2
3
4
5
6
7
8
9
10
11
12
13
  • 编辑视图

views.py

from .models import Student, Group   #导入模型
from rest_framework import viewsets
from .serializers import StudentSerializer, GroupSerializer  #导入序列化类
 
 
class StudentViewSet(viewsets.ModelViewSet):  #ModelViewSet是最终版,这边我们先认识一下
    queryset = Student.objects.all()  #告诉我们序列化哪些数据,这边就是说吧查出来的学生信息先给我序列化掉
    serializer_class = StudentSerializer  #告诉人家序列化哪个模型类
 
 
class GroupViewSet(viewsets.ModelViewSet):
    queryset = Group.objects.all()   #需要序列化的数据
    serializer_class = GroupSerializer   #要哪个序列化类
1
2
3
4
5
6
7
8
9
10
11
12
13
  • 路由url
from django.contrib import admin
from django.urls import path, include
from rest_framework import routers
from app01 import views
 
router = routers.DefaultRouter()
router.register(r'students', views.StudentViewSet)   #访问:http://127.0.0.1:8000/api/students/
router.register(r'groups', views.GroupViewSet)  #访问:http://127.0.0.1:8000/api/groups/
 
urlpatterns = [
    path('admin/', admin.site.urls),
    #path('', include(router.urls)),   # => 返回http://127.0.0.1:8000
    path('api/', include(router.urls)), #=> 返回http://127.0.0.1:8000/api
    #path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))  #认证
]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
编辑 (opens new window)
win环境快速搭建drf项目
序列化

← win环境快速搭建drf项目 序列化→

最近更新
01
配置yun源
05-24
02
linux-配置python虚拟环境
05-24
03
linux文件目录管理
05-24
更多文章>
Theme by Vdoing | Copyright © 2023-2023 yizhang | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式