[Django-REST-framework教程][03]基于类的视图

版权声明

本文出自 “ 幻冥极地 ” 博客 ,作者 小貘 采用 署名-非商业性使用-相同方式共享 协议。转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。
https://www.moorehy.com/archives/316

上一章我们使用基于函数的视图编写了 API 视图,然而我们还可以通过基于类的视图来编写。我们都明白这是一个更强力的模式,因为它允许我们复用通用的功能函数,并且帮助我们保持代码的 DRY

使用基于类的视图重写我们的 API

我们通过使用基于类的视图重写根视图开始。这包含了对 views.py 的一点重构。

目前为止,都很棒。它和之前的例程非常相似,但是我们得到了在不同 HTTP 方法间更高的隔离。我们还需要更新 views.py 中的实例视图。

看起来不错。这次,依旧与之前基于函数的视图实现非常相似。

由于我们正在使用基于类的视图,所以需要稍微重构下我们的 urls.py

好的,我们完成了。如果您运行着开发服务器,一切都应该像之前那样工作。

使用 mixins

使用基于类的视图的一大优势就是,它允许我们更容易的编写可复用的行为。

目前为止我们使用的增删改查操作对于我们创建的任何模型支持的 API 都非常相似。那些通用行为被实现在 REST 框架的 mixin 类中。

让我们看一下如何使用 mixin 类编写视图。下面是我们的 views.py 模型。

我们将花一点时间仔细检查下这里发生了什么。我们正使用 GenericAPIView 构建我们的视图,并加入 ListModelMixinCreateModelMixin

这个基类提供了核心的功能, mixin 类提供了 .list().create() 动作。然后我们明确的将 getpost 方法绑定到正确的动作上。到目前为止已足够简单。

非常相似。我们再次使用 GenericAPIView 类提供的核心功能,并加入 mixins 来提供 .retrieve().update() , 和 .destory() 动作。

使用基于类的通用视图

我们刚使用 mixin 类重写了视图来稍微减少了代码量,但是我们可以走的更远一步。 REST 框架提供了一组已经混合(mixed-in)的通用视图,通过它我们可以使我们的 views.py 模块更加精简。

哇哦,这太简单了。我们的代码获得了巨大的简化,并且它看上去更好,更干净,更符合 Django 的编程范式。

接下来我们将开始 教程四 ,在那里我们将学习如何处理我们 API 的认证和许可。

One thought on “[Django-REST-framework教程][03]基于类的视图

发表评论

电子邮件地址不会被公开。 必填项已用*标注