开发环境
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/