一、安装DRF
1、pip install djangorestframework -i https://pypi.douban.com/simple
2、pip install pymysql -i https://pypi.douban.com/simple
二、创建Django项目
1、django-admin startproject drfdemo
三、添加rest_framework应用
1、INSTALLED_APPS = [
...
'rest_framework',
]
四、创建模型操作类
1、创建模型操作类
class Student(models.Model):
# 模型字段
name = models.CharField(max_length=100,verbose_name="姓名")
sex = models.BooleanField(default=1,verbose_name="性别")
age = models.IntegerField(verbose_name="年龄")
class_null = models.CharField(max_length=5,verbose_name="班级编号")
description = models.TextField(max_length=1000,verbose_name="个性签名")
class Meta:
db_table="tb_student"
verbose_name = "学生"
verbose_name_plural = verbose_name
2、创建数据库 create database students charset=utf8;
3、执行数据迁移 把app01增加到INSTALL_APPS中
4、在__init__.py中增加pymysql做为数据库驱动
import pymysql
pymysql.version_info = (1, 4, 13, "final", 0)
pymysql.install_as_MySQLdb()
5、在setting.py配置文件中设置mysql的账号密码
DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
# }
'default':{
'ENGINE':'django.db.backends.mysql',
'NAME': "students",
"HOST": "127.0.0.1",
"PORT": 3306,
"USER": "root",
"PASSWORD": "123456"
}
}
6、终端命令下执行数据迁移
python manage.py migrate #创建表结构
python manage.py makemigrations app01#让Django知道模型有一些变更 注意是app01 应用名称,不是项目名称
python manage.py migrate app01 #创建表结构 注意是app01 应用名称,不是项目名称
7、在app01中新建serializers.py用于保存应用的序列化器。
# 创建序列化器类,回头会在试图中被调用 创建一个StudentModelSerializer用于序列化与反序列化。
class StudentModelSerializer(serializers.ModelSerializer):
class Meta:
model = Student
fields = "__all__"
8、编写视图类
在app01应用的views.py中创建视图StudentViewSet,这是一个视图集合。
from django.shortcuts import render
from rest_framework.viewsets import ModelViewSet
from .models import Student
from .serializers import StudentModelSerializer
# Create your views here.
class StudentViewSet(ModelViewSet):
queryset = Student.objects.all()
serializer_class = StudentModelSerializer
#queryset 指明该视图集在查询数据时使用的查询集
#serializer_class 指明该视图在进行序列化或反序列化时使用的序列化器9、定义路由
新建urls.py 添加路由信息
from . import views
from rest_framework.routers import DefaultRouter
#路由列表
urlpatterns = []
router = DefaultRouter() #可以处理视图的路由
router.register('student',views.StudentViewSet) #像路由器中注册视图集
urlpatterns += router.urls #将路由器中的所有路由追加到django的路由列表中
把students子应用中的路由文件加载到总路由中
from django.contrib import admin
from django.conf.urls import url
from django.urls import path
from django.urls import include
from . import views
urlpatterns = [
#path('admin/', admin.site.urls),
#url(r'^$',views.hello),
path('',views.hello), #http://127.0.0.1:8000/hello/
path('print',views.print), #http://127.0.0.1:8000/print
path('templates',views.templates),
path("stu/",include("app01.urls")),
]
点击链接127.0.0.1:8000/stu/students获取所有数据