DRF框架使用及数据序列化

本文介绍了如何使用DRF(Django Rest Framework)来构建Web API。从创建项目、配置路由开始,详细讲解了在models.py中定义模型,serializers.py中创建序列化器,以及在views中实现数据的序列化返回,帮助理解DRF在前后端分离中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 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)
到这里一个序列化以后的数据就已经返回了,也可以在序列化时指定其他格式,需要详细了解的可以查看官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值