Django REST framework 中使用 Django ORM 进行数据操作

阅读时长 9 分钟读完

引言

随着 Web 应用程序的发展,前后端分离式开发越来越流行。对于前端工程师来说,需要与后端共同开发的界面、功能逻辑等方面,需要深入了解后端的开发,以便与后端工程师配合愉快,更快捷的完成项目开发。在后端开发的领域里,Django REST framework 是一个广为使用的框架,可以让开发人员很好的组织和管理 Web API,本文将介绍如何在 Django REST framework 中使用 Django ORM 进行数据操作。

Django ORM 简介

Django ORM(Object Relational Mapping)是一个 Python 库,可以将关系型数据库中的数据和 Python 对象之间建立映射,它可以方便的进行 CRUD(创建 Create,读取 Retrieve,更新 Update,删除 Delete) 操作。Django ORM 提供了一个优雅而又简单的 API,使 Python 程序员可以高效地与数据库进行交互。使用 Django ORM,开发人员可以轻松地将多种数据库(如 PostgreSQL、MySQL、SQLite)与 Django 项目集成在一起,而无需手写 SQL 语句。

在 Django REST framework 中使用 Django ORM 进行数据操作

Django REST framework 是一个基于 Django 的 Web API 框架,它遵循 RESTful 架构风格,可以帮助开发人员更好地实现 Web API。在 REST framework 中,Django ORM 提供了一种很好的方式来与数据库进行交互。下面将介绍 REST framework 中,如何使用 Django ORM 进行数据操作。

创建数据表和实体类

首先需要在 models.py 中定义表和实体类:

-- -------------------- ---- -------
---- --------- ------ ------

----- -------------------
    -------- - --------------------------------
    ----- - -------------------
    ------------ - ---------------------------------------
    ------------ - -----------------------------------

----- -------------------
    ----- - --------------------------------
    ------- - ------------------
    ------------ - ---------------------------------------
    ------------ - -----------------------------------
    ---- - ----------------------- -------------------------

上面的代码定义了两个表:UserPost,其中 Post 表与 User 表实现了一对多的关联。

创建 serializer

接下来,需要在 serializers.py 文件中添加序列化器。序列化器旨在为 API 输入和输出进行序列化和反序列化,以确保客户端和服务器之间的数据传输是正确的。需要为每个模型写一个 serializer。下面是 UserSerializerPostSerializer 的定义:

-- -------------------- ---- -------
---- -------------- ------ -----------
---- ----------------- ------ ----- ----

----- --------------------------------------------
    ----- -----
        ----- - ----
        ------ - ------------ --------

----- --------------------------------------------
    ----- -----
        ----- - ----
        ------ - --------- ---------- -------

其中,UserSerializer 序列化 User 模型的 username 和 email 属性,PostSerializer 序列化 Post 模型的 title、content 和 user 属性。

创建 viewset

一旦定义了模型和序列化器,可以创建 viewset 来实现对数据的 CRUD 操作,下面是 UserViewSetPostViewSet 的定义:

-- -------------------- ---- -------
---- -------------- ------ --------
---- -------------------------- ------ ---------------
---- ---------------------- ------ --------------- --------------
---- ----------------- ------ ----- ----

----- -----------------------------------
    ------------------ - -----------------
    -------- - ------------------
    ---------------- - --------------

----- -----------------------------------
    ------------------ - -----------------
    -------- - ------------------
    ---------------- - --------------

其中,视图集继承了 ModelViewSet,该类提供了默认的实现,包括 GET、POST、PUT、PATCH、DELETE 六个方法。permission_classes 属性设置了权限,这里设置的是 IsAuthenticated,表示只有登录用户才能访问 API。queryset 属性定义了数据来源,这里设置的是 User 和 Post 的全部数据。serializer_class 属性定义了视图集使用的序列化器。

编写路由

最后一步是编写路由。需要在 urls.py 文件中添加路由信息:

-- -------------------- ---- -------
---- ----------- ------ ----- -------
---- -------------- ------ -------
---- ---------------- ------ ------------ -----------

------ - ----------------------
------------------------- ------------
------------------------- ------------
----------- - -
    -------- ----------------------
-

上述代码定义了 UserPost 两个模型的 URL 映射,并将它们注册到 routers.SimpleRouter 对象中,使得可以使用 HTTP 动词对它们进行 CRUD 操作。

测试 API

创建数据表和实体类、编写 serializer、viewset 及路由后,我们就可以通过 API 进行数据的 CRUD 操作了。例如,要创建一个用户,可以使用如下请求:

要获取所有用户,可以使用如下请求:

完整的代码示例,请参考下面的代码:

-- -------------------- ---- -------
---- --------- ------ ------
---- -------------- ------ ------------ --------- -------- -----------
---- ----------- ------ ----- -------

----- -------------------
    -------- - --------------------------------
    ----- - -------------------
    ------------ - ---------------------------------------
    ------------ - -----------------------------------

----- -------------------
    ----- - --------------------------------
    ------- - ------------------
    ------------ - ---------------------------------------
    ------------ - -----------------------------------
    ---- - ----------------------- -------------------------

----- --------------------------------------------
    ----- -----
        ----- - ----
        ------ - ------------ --------

----- --------------------------------------------
    ----- -----
        ----- - ----
        ------ - --------- ---------- -------

----- -----------------------------------
    ------------------ - -----------------------------
    -------- - ------------------
    ---------------- - --------------

----- -----------------------------------
    ------------------ - -----------------------------
    -------- - ------------------
    ---------------- - --------------

------ - ----------------------
------------------------- ------------
------------------------- ------------

----------- - -
    -------- ----------------------
-

总结

本文介绍了在 Django REST framework 中,如何使用 Django ORM 进行数据操作。首先需要定义数据表和实体类,然后定义对应的 serializer,接着创建视图集,最后编写路由。通过本文所介绍的方法,您可以轻松地在 Django REST framework 中使用 Django ORM 进行数据操作,快速高效地完成 Web API 的开发。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64af8b9d48841e9894b9abb0

纠错
反馈