开发环境

IDE:Pycharm 2021.1.1
系统:macOS Mojave 10.14.6
Python 3.9.2

环境准备

安装 Python

安装 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 models


class 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 Project


class 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 ProjectSerializer


class 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 views


router = 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/

秦浩然
3 声望0 粉丝