使用|使用 Django 搭建后台 API 服务(一)

开发环境 IDE:Pycharm 2021.1.1
系统:macOS Mojave 10.14.6
Python 3.9.2
环境准备 安装 Python
【使用|使用 Django 搭建后台 API 服务(一)】
安装 Django

pip3 install Django pip3 install djangorestframework

创建项目
django-admin startproject api

创建应用
python3 manage.py startapp pms

编辑 api/settings.py
INSTALLED_APPS = [ ... 'rest_framework', 'pms.apps.PmsConfig' ]

使用 MySQL 数据库 安装 MySQL 驱动
pip3 install mysqlclient

修改配置
编辑文件 api/settings.py
# settings.py DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'pms', 'HOST': 'localhost', 'PORT': '3306', 'USER': 'root', 'PASSWORD': '123' } }

修改时区
编辑文件 api/settings.py
TIME_ZONE = 'Asia/Shanghai'

执行数据库迁移
# 迁移数据库 python3 manage.py migrate# 创建超级管理员 python3 manage.py createsuperuser

创建模型 编辑 pms/models.py
from django.db import modelsclass Project(models.Model): name = models.CharField(max_length=100) start_date = models.DateField end_date = models.DateField

# 生成迁移文件 python3 manage.py makemigrations pms# 查看对应的迁移 SQL python3 manage.py sqlmigrate pms 0001# 执行迁移(模型同步到数据库) python3 manage.py migrate

创建序列化 新建 pms/serializers.py,编辑:
from rest_framework import serializers from pms.models import Projectclass ProjectSerializer(serializers.ModelSerializer): class Meta: model = Project fields = ['id', 'name', 'start_date', 'end_date']

编辑视图 编辑 pms/views.py
from rest_framework import viewsets from pms.models import Project from pms.serializers import ProjectSerializerclass ProjectViewSet(viewsets.ModelViewSet): queryset = Project.objects.all() serializer_class = ProjectSerializer

编辑路由 编辑 pms/url.py
from django.urls import include from rest_framework.routers import DefaultRouter from pms import viewsrouter = DefaultRouter() router.register(r'projects', views.ProjectViewSet)urlpatterns = [ path('', include(router.urls)), ]

运行服务
python3 manage.py runserver

测试
# 创建项目 POST http://127.0.0.1:8000/projects/ 请求: { "name": "移居火星项目", "start_date": "2021-01-01", "end_date": "2021-01-31" }

# 获取项目列表 GET http://127.0.0.1:8000/projects/ 结果: [ { "id": 1, "name": "移居火星项目", "start_date": "2022-01-01", "end_date": "2072-12-30" } ]

# 获取项目详情 GET http://127.0.0.1:8000/projects/1/ 结果: { "id": 1, "name": "移居火星项目", "start_date": "2022-01-01", "end_date": "2072-12-30" }

# 更新项目 PUT http://127.0.0.1:8000/projects/1/ 请求: { "name": "移居火星项目2", "start_date": "2022-01-01", "end_date": "2072-12-30" }

# 删除项目 DELETE http://127.0.0.1:8000/projects/1/

    推荐阅读