Skip to content

Django REST Framework

Django REST Framework ( DRF )

DRF 是一个 Django 的第三方应用,主要用于快速构建 Restful API 服务器

在原生 Django 提供更加简洁的 CRUD 实现、数据序列化反序列化、权限、认证等功能

下载安装

zsh
# 1. 在项目中创建并启用虚拟环境
% cd [项目名]
% python -m venv [虚拟环境]
% source [虚拟环境]/bin/activate

# 2. 在虚拟环境中下载安装 Django
(虚拟环境) % pip install Django==4.2.16

# 3. 在虚拟环境中下载安装 DRF 相关的包
(虚拟环境) % pip install djangorestframework==3.15.2
(虚拟环境) % pip install markdown
(虚拟环境) % pip install django-filter

架构组成

txt
                                      Client
┏━━ DRF + Djang ━━━━━━━━━━━━━━━━━━━━━━━━▼━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                      URL                      ┃
┃                    ┏━━━━━━━━━━━━━━━━━━▼━━━━ Application ━┓    ┃
┃                    ┃                Router               ┃    ┃
┃                    ┃                  ▼                  ┃    ┃
┃  ┏━━━━━━━━━━━━━━┓  ┃               ViewSets              ┃    ┃
┃  ┃ Django Admin ┃  ┃                  ▼                  ┃    ┃
┃  ┣━━━━━━━━━━━━━━╋━━╋━━━━━━━━━━━━━━━ Models               ┃    ┃
┃  ┃ BrowsableAPI ┃  ┃                  ▼                  ┃    ┃
┃  ┗━━━━━━┳━━━━━━━┛  ┃              Serializers            ┃    ┃
┃         ┃          ┃                  ▼                  ┃    ┃
┃         ┃          ┗━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━┛    ┃
┗━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━▼━━━━━━━━━━━━━━━━━━━━━━━┛
          ┗━━━━━━━━━━━━━━━━━━━━━━━▶  Database
txt
                                      Client
┏━━ Djang ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━▼━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                      URL                      ┃
┃                    ┏━━━━━━━━━━━━━━━━━━▼━━━━ Application ━┓    ┃
┃                    ┃               Sub URL               ┃    ┃
┃                    ┃                  ▼                  ┃    ┃
┃                    ┃                Views                ┃    ┃
┃                    ┃       ┏━━━━━━━━━━┻━━━━━━━━━━┓       ┃    ┃
┃  ┏━━━━━━━━━━━━━━┓  ┃       ▼                     ▼       ┃    ┃
┃  ┃ Django Admin ┣━━╋━━━━ Models ━━━━━━━━━━━▶ Templates ▶ ▶ ▶ ▶ ▶
┃  ┗━━━━━━┳━━━━━━━┛  ┃       ▲                             ┃    ┃
┃         ┃          ┗━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛    ┃
┗━━━━━━━━━╋━━━━━━━━━━━━━━━━━━▼━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
          ┗━━━━━━━━━━━━▶  Database
原生 DjangoDjango REST Framework
路由手写 URLRouter
视图ViewsViewSets
模型ModelsModels
数据序列化在视图中直接操作 ModelsSerializers 操作 Models
测试与管理界面Django AdminDjango Admin + Browsable API

前提配置

py
INSTALLED_APPS = [
    # ...
    "rest_framework",                                                                    
    "rest_framework.authtoken",
]

REST_FRAMEWORK = {                                                                       
    # 分页配置
    "DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.LimitOffsetPagination",
    "PAGE_SIZE": 100,

    # 日期时间格式
    "DATETIME_FORMAT": "%Y-%m-%dT%H:%M:%S%z",

    # 解析器
    "DEFAULT_PARSER_CLASSES": [
        "rest_framework.parsers.JSONParser",
        "rest_framework.parsers.FormParser",
        "rest_framework.parsers.MultiPartParser",
    ],

    # 渲染器
    "DEFAULT_RENDERER_CLASSES": [
        "rest_framework.renderers.JSONRenderer",
        "rest_framework.renderers.BrowsableAPIRenderer",
    ],

    # 权限控制
    "DEFAULT_PERMISSION_CLASSES": [
        "rest_framework.permissions.IsAuthenticated",
    ],

    # 认证方式
    "DEFAULT_AUTHENTICATION_CLASSES": [
        "rest_framework.authentication.BasicAuthentication",
        "rest_framework.authentication.SessionAuthentication",
        "rest_framework.authentication.TokenAuthentication",
    ],
}
py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path("admin/", admin.site.urls),
    path("api-auth/", include("rest_framework.urls")),  
]

最近更新: