GraphQL 是一种用于 API 的查询语言,它可以帮助前端开发人员更有效地请求数据。Django 是一个流行的 Python Web 框架,它提供了许多有用的工具和库,用于构建 Web 应用程序。在本文中,我们将介绍如何使用 GraphQL 与 Django 交互,以便更好地管理和请求数据。
安装和设置
要使用 GraphQL 和 Django,我们需要安装几个库。首先,我们需要安装 Django:
pip install Django
接下来,我们需要安装 graphene-django,这是一个 Django 库,它提供了与 GraphQL 的集成:
pip install graphene-django
安装完成后,我们需要在 Django 项目的 settings.py 文件中添加以下行:
INSTALLED_APPS = [ # ... 'graphene_django', ]
然后,我们需要在项目的 urls.py 文件中添加一个 GraphQL 视图:
from django.urls import path from graphene_django.views import GraphQLView urlpatterns = [ path('graphql/', GraphQLView.as_view(graphiql=True)), ]
这将创建一个可以在浏览器中查看的 GraphQL 界面。
创建 GraphQL 模式
现在我们已经设置了 GraphQL 和 Django,我们需要创建一个 GraphQL 模式。模式是定义数据结构和查询的地方。在 Django 中,我们可以使用 graphene-django 库来定义模式。
我们将创建一个简单的模式,它将返回一个字符串。在项目的根目录中,创建一个文件 schema.py,然后添加以下内容:
-- -------------------- ---- ------- ------ -------- ----- --------------------------- ----- - ----------------- --- ------------------- ------ ------ ------ ------- ------ - ----------------------------
这将创建一个名为 hello 的查询,它将返回字符串 'Hello World!'。
查询数据
现在我们已经创建了一个简单的 GraphQL 模式,我们可以使用它来查询数据。在浏览器中,我们可以打开 /graphql/ 页面,并在左侧的查询编辑器中输入以下内容:
{ hello }
然后点击运行查询按钮,我们将看到以下响应:
{ "data": { "hello": "Hello World!" } }
这表明我们的查询已成功返回了字符串 'Hello World!'。
查询 Django 模型
现在让我们扩展我们的模式,以便查询 Django 模型。假设我们有一个简单的 Django 模型,它表示一个人的信息,我们可以定义一个 GraphQL 模式来查询该模型。
首先,在 models.py 文件中添加以下内容:
from django.db import models class Person(models.Model): name = models.CharField(max_length=100) age = models.IntegerField()
这将创建一个名为 Person 的模型,它有两个字段:name 和 age。
接下来,在 schema.py 文件中添加以下内容:
-- -------------------- ---- ------- ---- --------------- ------ ---------------- ---- ------- ------ ------ ----- ----------------------------- ----- ----- ----- - ------ ----- --------------------------- ------ - ------------------------- --- -------------------- ------ ------ -------------------- ------ - ----------------------------
这将创建一个名为 people 的查询,它将返回所有 Person 模型的实例。
现在我们可以在 GraphQL 编辑器中查询所有人的信息:
{ people { id name age } }
这将返回所有人的 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