官方文档
https: //www.django-rest-framework.org /
安装
pip install django==3.2.12 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install djangorestframework==3.13.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pymysql==1.0.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
创建项目
django-admin startproject my_drf
django-admin startapp app01
把应用放到apps文件夹
新建个apps文件 并创建个__init__.py 文件
然后把创建的app 放到apps 里
配置 settings.py INSTALLED_APPS
from pathlib import Path
import os,sys
BASE_DIR = Path(__file__).resolve().parent.parent
sys.path.append(os.path.join(BASE_DIR,'apps' ))
···········
INSTALLED_APPS = [
····
'rest_framework' ,
'app01' ,
]
配置 Mysql数据库
确保已经创建了 my_drf 数据库create database my_drf charset=utf8mb4;
在settings.py文件下 配置 MysqlDATABASES = {
'default' : {
'ENGINE' : 'django.db.backends.mysql' ,
'NAME' : 'my_drf' ,
'USER' : 'root' ,
'PASSWORD' : 'root' ,
'HOST' : '127.0.0.1' ,
'PORT' : '3306' ,
'OPTIONS' : {'charset' : 'utf8mb4' },
}
}
应用下的_init _.py 设置默认加载 pymysql
import pymysql
pymysql .install_as_MySQLdb()
models模型
from django.db import models
# Create your models here.
class Group (models .Model ):
name = models.CharField (verbose_name ='小组名字',max_length =5)
def __str__(self ):
return self.name
class Student (models .Model ):
name = models.CharField (verbose_name ='学生名字',max_length =10)
age = models.IntegerField (verbose_name ='学生年龄')
group = models.ForeignKey (to =Group , on_delete =models .CASCADE )
数据库迁移
python manage.py makemigrations
python manage.py migrate
序列化器
在应用下新建一个serializers.py文件,目的是序列化我们的模型类
from dataclasses import fields
from rest_framework.serializers import HyperlinkedModelSerializer
from .models import Group,Student
class GroupSerializer (HyperlinkedModelSerializer ):
class Meta :
model = Group
fields = ('id' ,'name' )
class StudentSerializer (HyperlinkedModelSerializer ):
class Meta :
model = Student
fields = ('id' ,'name' ,'age' ,'group' )
视图
我们对数据的增删改查全包含在viewsets里面这个类里面了
from django.shortcuts import render
# Create your views here.
from rest_framework import viewsets
from .models import Student,Group #导入模型类
from .serializers import * #导入序列化器
class StudentViewSet (viewsets .ModelViewSet ):
queryset = Student .objects.all()
serializer_class = StudentSerializer
class GroupViewSet (viewsets .ModelViewSet ):
queryset = Group .objects.all()
serializer_class = GroupSerializer
路由
from django.urls import path
from rest_framework.routers import DefaultRouter
from app01.views import StudentViewSet,GroupViewSet
router = DefaultRouter()
router.register('students' ,StudentViewSet)
router.register('groups' ,GroupViewSet)
urlpatterns = [
]
urlpatterns += router.urls
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path ('admin/' , admin.site .urls ),
path ('api/v1/' , include ('app01.urls' )),
]
启动测试
python manage.py runserver
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步