开发环境

IDE:Pycharm 2021.1.1
零碎:macOS Mojave 10.14.6
Python 3.9.2

环境筹备

装置 Python

装置 Django

pip3 install Djangopip3 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.pyDATABASES = {    '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# 查看对应的迁徙 SQLpython3 manage.py sqlmigrate pms 0001# 执行迁徙(模型同步到数据库)python3 manage.py migrate

创立序列化

新建 pms/serializers.py,编辑:

from rest_framework import serializersfrom 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 viewsetsfrom pms.models import Projectfrom pms.serializers import ProjectSerializerclass ProjectViewSet(viewsets.ModelViewSet):    queryset = Project.objects.all()    serializer_class = ProjectSerializer

编辑路由

编辑 pms/url.py

from django.urls import includefrom rest_framework.routers import DefaultRouterfrom 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/