如何使用 GraphQL 与 Django 交互

阅读时长 7 分钟读完

GraphQL 是一种用于 API 的查询语言,它可以帮助前端开发人员更有效地请求数据。Django 是一个流行的 Python Web 框架,它提供了许多有用的工具和库,用于构建 Web 应用程序。在本文中,我们将介绍如何使用 GraphQL 与 Django 交互,以便更好地管理和请求数据。

安装和设置

要使用 GraphQL 和 Django,我们需要安装几个库。首先,我们需要安装 Django:

接下来,我们需要安装 graphene-django,这是一个 Django 库,它提供了与 GraphQL 的集成:

安装完成后,我们需要在 Django 项目的 settings.py 文件中添加以下行:

然后,我们需要在项目的 urls.py 文件中添加一个 GraphQL 视图:

这将创建一个可以在浏览器中查看的 GraphQL 界面。

创建 GraphQL 模式

现在我们已经设置了 GraphQL 和 Django,我们需要创建一个 GraphQL 模式。模式是定义数据结构和查询的地方。在 Django 中,我们可以使用 graphene-django 库来定义模式。

我们将创建一个简单的模式,它将返回一个字符串。在项目的根目录中,创建一个文件 schema.py,然后添加以下内容:

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

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

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

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

这将创建一个名为 hello 的查询,它将返回字符串 'Hello World!'。

查询数据

现在我们已经创建了一个简单的 GraphQL 模式,我们可以使用它来查询数据。在浏览器中,我们可以打开 /graphql/ 页面,并在左侧的查询编辑器中输入以下内容:

然后点击运行查询按钮,我们将看到以下响应:

这表明我们的查询已成功返回了字符串 'Hello World!'。

查询 Django 模型

现在让我们扩展我们的模式,以便查询 Django 模型。假设我们有一个简单的 Django 模型,它表示一个人的信息,我们可以定义一个 GraphQL 模式来查询该模型。

首先,在 models.py 文件中添加以下内容:

这将创建一个名为 Person 的模型,它有两个字段:name 和 age。

接下来,在 schema.py 文件中添加以下内容:

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

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

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

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

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

这将创建一个名为 people 的查询,它将返回所有 Person 模型的实例。

现在我们可以在 GraphQL 编辑器中查询所有人的信息:

这将返回所有人的 id、name 和 age。

创建和更新数据

我们还可以使用 GraphQL 创建和更新数据。在 schema.py 文件中,我们可以添加一个 Mutation 类,它将处理创建和更新数据的逻辑。

假设我们要创建一个新的 Person 实例,我们可以添加以下内容:

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

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

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

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

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

这将创建一个名为 create_person 的 Mutation,它将创建一个新的 Person 实例。我们可以在 GraphQL 编辑器中运行以下命令来创建新的 Person 实例:

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

这将返回新创建的 Person 实例的 id、name 和 age。

我们还可以使用 Mutation 类来更新现有的 Person 实例。假设我们要更新一个名为 Bob 的人的年龄,我们可以添加以下内容:

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

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

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

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

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

这将创建一个名为 update_person 的 Mutation,它将更新一个现有的 Person 实例。我们可以在 GraphQL 编辑器中运行以下命令来更新 Bob 的年龄:

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

这将返回更新后的 Person 实例的 id、name 和 age。

结论

在本文中,我们介绍了如何使用 GraphQL 和 Django 交互。我们首先设置了 Django 和 graphene-django 库,然后创建了一个简单的 GraphQL 模式。我们还介绍了如何查询 Django 模型,并使用 Mutation 类创建和更新数据。希望这篇文章对你有所帮助,让你更好地管理和请求数据。

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

纠错
反馈