目录
DRF基础理论
DRF是一个前后端分离的框架,其实就是django框架的一个应用 django restful framework ,专门为前后端分离设计的。
web有两种开发方式:
1.前后端不分离,例如django以及flask,当然也不是绝对的,这两种框架也可以用于前后端分离,只不过用起来很麻烦,不如专业的前后端分离框架。(这两种框架视图返回的是html页面,但是h5标签不能够被小程序以及app识别)
2.前后端分离:例如drf以及fastapi,也可以用于前后端不分离,当然也是很麻烦的。这两种框架视图返回的是json数据,能够被小程序,app以及网页识别)
django restful framework中的restful指的是一种路由风格。遵守rest约束的路由就叫做restful路由。
名词通常用复数来表示,例如category就用categorys来表示。
HTTP请求动词指的是请求方式,经常使用GET,POST,PUT,PATCH以及DELETE。
常见状态码:
200请求成功
201创建成功
204删除成功
301永久重定向
302临时重定向
303服务器未更改
403权限不够
404页面丢失,请求地址错误
405请求方式不对
500服务器有错误
使用DRF前提
1.新建一个工程,下载django模块以及djangorestframework模块。
2.新建一个django项目,该行代码需要在终端里面运行,运行成功后更目录下方会多出一个文件。
python startproject 项目名
3.将下载好的djangorestframework模块进行注册,打开刚才新建的项目文件夹,点开settings.py文件,找到INSTALLED_APPS,并在列表最后添加上'rest_framework',到此为止就注册好了。
4.添加路由,打开与settings.py同级下方的urls.py文件,并且在列表urlpatterns最后添加以下代码。
path('', include('rest_framework.urls',namespace='rest_framework')),
第一对单引号里面可以为空,也可根据自己的需求自行更改。这个路由里面自带登录以及退出路由。
5.将drf真正的引入进来,还是在urls.py里面进行添加需要得到代码。
from rest_framework import routers
route = routers.DefaultRouter()
这两行代码是将routes引入进来并创建一个实例。
path('api/', include(route.urls)),
这行代码是将drf的路由添加进来,第一对单引号里面的内容也是自行更改。
到此为止,前提工作基本结束,能够保证后期的基本操作。
创建一个简单的应用
1.使用django创建一个子应用。
cd 项目名
python manage.py startapp 子应用名
根据自己的需要修改项目名以及子应用名,在这里我使用的是mysite以及news。
2.将新建的子应用进行注册,和注册djangorestframework模块一样,将子应用名用引号引起来添加到列表INSTALLED_APPS最后。
3.根据自己的需要在新建的子应用下的models.py文件中建立模型。以下是我建立的模型,可以进行模仿,根据自己的需求进行修改。
from django.db import models
class Category(models.Model):
title = models.CharField(max_length=50, unique=True, verbose_name="分类名")
def __str__(self):
return self.title
4.在子应用下xinjianyigepy文件,命名为serializers,这个命名不是固定的,自行修改。建这个文件的目的是创建序列化类。可以参考我的代码。
from rest_framework import serializers
from .models import Category
class CategorySerializer(serializers.ModelSerializer):
class Meta:
model = Category
fields = ['url', 'id', 'title']
前提要导入serializers模块,需要用到这个模块来进行序列化,在代码中可以看出来还需要导入需要进行序列化的类。这是固定的格式,CategorySerializer是序列化类名,一般都是需要进行序列化的类跟上Serializer,后面括号中的serializers.ModelSerializer意思是继承了模块serializers中的ModelSerializer方法,也可以使用HyperlinkedModelSerializer,HyperlinkedModelSerializer是最高级的但是不常用,一般都是使用ModelSerializer。Meta是一个元类,而且是必须要有的,model指的是需要序列化的类,在代码中指的就是从models中导入的Category,fields指的是需要序列化的字段。
5.将子应用的路由注册,重新回到主应用下的urls.py中,并添加以下代码即可。
from news.views import CategoryViewSet
route.register('categorys',CategoryViewSet)
第一行将需要注册的视图集导入进来,第二行进行注册。通常括号内第一对单引号中的是类名转小写并加上s,逗号后面的就是需要进行注册的视图集。
6.终端输入python manage.py runserver启动服务器,前提是创建一个超级管理员账号,python manage.py createsuperuser。
总结
初步认识了什么是DRF框架,以及DRF框架的使用方法,DRF框架就是一个前后端分离的框架,方便前段攻人员与后端工作人员的对接,能够提高工作效率。