『Django』初识DRF
点赞 + 关注 + 收藏 = 学会了
本文简介
上一讲《『Django』初识前后端分离》https://mp.weixin.qq.com/s/kvhX8pePKbrS7z9fncT0mA 介绍了在 Django
中如何给前端写接口。如果有跟着动手做的工友一定会发现,这样写接口实在太麻烦了,还容易出错。显然大家都意识到这个问题,于是就有了 DRF(Django REST Framework)
。
DRF(Django REST Framework)
是一个用于快速构建 Web APIs 的强大工具包。它基于 Django
框架,为开发者提供了一套简洁且灵活的方式来构建 RESTful
风格的API。
DRF
的主要作用是对数据进行序列化,序列化器的作用是将 Python 转化为 JSON 格式的数据。
DRF的基础用法
DRF
的使用方法非常简单,只需以下几步操作。
- 安装
djangorestframework
- 在应用中添加
rest_framework
- 创建序列化器
- 创建视图
- 设置 URL 路由
我拿上一节《『Django』初识前后端分离》里讲到的获取博客列表接口改造一下。
安装 djangorestframework
使用 DRF
之前需要先安装 djangorestframework
pip install djangorestframework
添加 rest_framework 应用
在 settings.py
中将 rest_framework
添加到 INSTALLED_APPS
:
INSTALLED_APPS = [
# 其他已安装的应用
'blog', # blog应用
'rest_framework'
]
创建序列化器
序列化器负责将模型数据转换为 JSON 格式,并处理数据验证。在 blog
应用中创建一个序列化器类:serializers.py
在里面写入以下代码:
# blog/serializers.py
from rest_framework import serializers
class BlogListSerializer(serializers.Serializer):
# 将需要序列话的字段逐一列出来
id = serializers.IntegerField(read_only=True) # IntegerField: 整数
title = serializers.CharField(max_length=100) # 限制长度为100
cover_image = serializers.ImageField()
user = serializers.CharField()
创建视图
在 blog
的试图里,我在之前写过的 apiBlogList()
里改造一下。
# blog/views.py
from django.http import JsonResponse
from blog.models import Article
from .serializers import BlogListSerializer
# 查看博客列表(api)
def apiBlogList(request):
articleList = Article.objects.all() # 获取Article的所有内容
serializer = BlogListSerializer(articleList, many=True) # 这是一个查询对象
return JsonResponse(serializer.data, safe=False) # safe: 是否进行转义,false表示不转义
其中,serializer = BlogListSerializer(articleList, many=True)
中的 many=True
是非常重要的参数,它的作用是告诉序列化器你正在处理的是一个列表而不是单个对象。
设置 URL 路由
在 urls.py
中设置好对应的路由,我这里设置的路由地址是 api/blog/apiBlogList/
此时,在浏览器访问 http://127.0.0.1:8000/api/blog/apiBlogList/
就能获得数据了。
以上就是本文的全部内容。接下来会讲解如何更优雅的使用 DRF
以及如何配置 GET
之外的请求方法。
点赞 + 关注 + 收藏 = 学会了