- DRF 是一套基于django的rest前后端分离的框架,是一个用来构建Web API的强大、灵活的工具箱
- 创建项目
安装django/rest
pip install django
pip install djangorestframework
创建一个文件夹 test 并进入文件夹
mkdir test
cd test
执行命令创建django项目,并进入项目中创建应用
django-admin startproject testproject
cd testproject
django-admin startapp testapp
- 修改配置,并对应用设置路由
当项目创建好以后,我们进入到settings文件中修改配置
INSTALLED_APPS 这个里面是把我们的一些应用给挂载到项目中,这里我们把rest_framework 和我们的应用挂载进去,当我们启动django服务时系统中才可以找到我们的应用
MIDDLEWARE这个里面时django中所使用的一些中间件,在django中,启动项目以后,会以此执行这个里面的中间件,这里我们把CSRF给注释掉,当我们使用DRF时可以自己手动给需要的接口单独配置,这里不注释即是全局配置CSRF跨站防护
TEMPLATES :这个是django的模板的一些配置,DIRS 是存放模板的文件夹,在使用DRF时是前后端分离式的不需要自己写模板情况下可以不用配置
DATABASE : 这里配置的是项目中所使用的数据库,默认是sqlite3,一般可以配置为Mysql.
配置好settings文件后,然后就可以到应用中的views中去编写接口,DRF里面可以使用CBV的方式编写
我们需要使用rest_framework 中的APIview类来编写接口,下面是一个最简单的案例
from rest_framework.views import APIView
from rest_framework.response import Response
class TEST(APIView):
def get(self,request):
dict = {}
dict["code"] = 200
return Response(dict)
最后对路由进行配置,在DRF中一次请求首先会经过 process_request,然后会进行路由匹配,接着经过process_view,然后执行views中的逻辑,最后经过process_response,最后返回结果
我们可以在urls.py文件中配置每个应用的路由文件,通过路由分发到每个应用中在分发带具体的某个接口中
- 修改urls.py配置应用中的路由
from django.contrib import admin
# from django.urls import path,
from django.conf.urls import url,include
urlpatterns = [
url('admin/', admin.site.urls),
url('^', include('testapp.urls')),
]
- 到具体的应用中去创建一个urls.py的文件配置具体的接口路由
from django.conf.urls import url
from .views import TEST
urlpatterns = [
url('index/',TEST.as_view())
]
当上面的完成以后到终端执行命令 manage.py runserver 127.0.0.1:8080启动服务
当启动以后到本地浏览器输入http://127.0.0.1:8080/index就可以看到一个结果。
- 当成功启动项目以后我们在从数据库中取出数据时会发现是一个对象,当需要把当结果返回时我们可以先进行序列化然后再返回结果
- 第一步需要修改我们的models.py
- `在这
from django.db import models
class TEST(models.Model):
"""最简单的模型"""
user = models.CharField(db_column='user', primary_key=True, max_length=255)
password = models.CharField(db_column='password', max_length=255, blank=True, null=True)
class Meta:
db_table = 'USER'
#配置好模型后通过下面命令进行数据库的迁移
# python manage.py makemigrations
# python manage.py migrate
- 创建完模型后我们在models.py同级的路径下面创建一个serializers.py文件,并修改内容为
from rest_framework import serializers
from .models import TEST
class seriaUser(serializers.Serializer):
user = serializers.CharField(max_length=255)
password =serializers.CharField(max_length=255)
- 最后我们到views函数中获取数据并进行序列化返回
from rest_framework.views import APIView
from rest_framework.response import Response
from .serializers import seriaUser
from .models import TEST
class EASY(APIView):
#这里需要注意,取到的结果是对象列表
result = TEST.objets.all()
for x in result:
res = seriaUser(x)
return Response(res)
到这里一个序列化以后的数据就已经返回了,也可以在序列化时指定其他格式,需要详细了解的可以查看官方文档。