django Rest framwork初探

django Rest framwork初探

1.前后端开发模式

前后端分离开发模式

前后端分离前:前端页面看到的效果都是由后端控制,即后端渲染HTML页面,前端和后端耦合度很高。

  • 前后端分离前存在的问题
    • PC,APP,Pad等多端流行
    • 前端开发职责不清晰,最大程度减少开发的难度,方便协助,
    • 开发效率问题,一般后端开发需要前端准备好页面,有时前端也一直配合后端,能力受限
    • 前后端代码混在一起,日积月累,维护成本增加
    • 后端开发语言和模板耦合

Django Rest Framework

  • Django REST framework (简称:DRF)是一个强大而灵活的 Web API 工具。

  • 遵循RESTFullAPI风格,功能完善,可快速开发API平台。

  • 官方文档 https://www.django-rest-framework.org

Django Rest Framework新版本使用要求

  • python (3.8,3.9,1.10)
  • Django(2.2、3.0、3.1、3.2、4.0)

安装

python 复制代码
pip install djangorestframework
  • 添加rest_framework道INSTALLED_APPS 设置中

    INSTALLED_APPS = [
    'rest_framwork'
    ]

  • 示例

    • 创建APP
    • 定义数据模型并且同步数据库
    • 编写序列化器文化
    • 编写视图
    • 添加API路由
  • 1.创建app

    python manage.py startapp myapp_api

  • 2.定义数据库模型并同步数据库

  • 初始化和同步数据库

    python manage.py makemigrations
    python manage.py migrate

  • 3.编写序列化器文件

myapp_api/serializers.py

复制代码
from myapp_api.models import User
from rest_framework import serializers

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User  #指定数据模型
        fields = '__all__'
  • 4.编写视图

    from django.shortcuts import render

    Create your views here.

    from rest_framework import viewsets
    from .serializers import UserSerializer
    from myapp_api.models import User

    class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all() #指定操作的数据
    serializer_class = UserSerializer # 指定序列化器

  • 5.添加api路由

    devops/urls.py

    from django.contrib import admin
    from django.urls import path,include

    urlpatterns = [
    path('myapp_api/',include('myapp_api.urls'))
    ]

    myapp_api/urls.py

    from django.contrib import admin
    from django.urls import path,include
    from rest_framework import routers
    from myapp_api import views

    #注册路由
    router = routers.DefaultRouter()
    router.register(r'user', views.UserViewSet)
    urlpatterns = [
    path('api/',include(router.urls)),
    ]

这是基本的drf api开发的入门

时间2025-08-20 00:34

write by yangzaikai