『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 的使用方法非常简单,只需以下几步操作。

  1. 安装 djangorestframework
  2. 在应用中添加 rest_framework
  3. 创建序列化器
  4. 创建视图
  5. 设置 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 之外的请求方法。

点赞 + 关注 + 收藏 = 学会了

posted @ 2024-11-14 09:18  德育处主任  阅读(0)  评论(0编辑  收藏  举报