下面是关于“GraphQL在Django中的使用教程”的完整攻略,包含两条示例说明:
1. 介绍
GraphQL是一种用于API开发的查询语言和运行时。它被归类为替代REST的API解决方案之一。它具有强大的查询语言、类型安全、自动化API文档生成、动态查询、精确响应、递归查询等优点。同时,GraphQL也可以与Django集成,使用GraphQL可以在Django项目中很好地解决API问题。
2. 安装和配置
首先,需要安装一些必要的Django和GraphQL依赖项,包括graphene-django
和django-graphql-auth
。
pip install graphene-django django-graphql-auth
安装完成后需要将这些依赖项集成到Django项目中。在settings.py
文件中添加以下内容:
INSTALLED_APPS = [
...
'graphene_django',
'graphql_auth',
...
]
MIDDLEWARE = [
...
'graphql_auth.middleware.AuthenticationMiddleware',
...
]
AUTHENTICATION_BACKENDS = [
'graphql_auth.backends.GraphQLAuthBackend',
'django.contrib.auth.backends.ModelBackend',
]
接下来,我们需要将GraphQL添加到Django的URL映射中。在urls.py
文件中添加以下内容:
from django.urls import path
from graphene_django.views import GraphQLView
urlpatterns = [
path('graphql', GraphQLView.as_view(graphiql=True)),
]
现在,GraphQL已经整合到了Django项目中。现在可以开始创建GraphQL schema和resolver函数了。
3. 示例一:简单的查询
首先,要创建GraphQL schema。在schema.py
文件中添加以下内容:
import graphene
class Query(graphene.ObjectType):
hello = graphene.String(name=graphene.String(default_value="World"))
def resolve_hello(root, info, name):
return "Hello " + name
schema = graphene.Schema(query=Query)
这个schema定义了一个名为hello
的查询字段,它接受一个参数name
,并返回一个字符串。现在可以在GraphQL Playground中测试查询了。在浏览器中输入http://localhost:8000/graphql
来打开GraphQL Playground。然后在左侧的查询窗口中输入以下内容:
query {
hello(name: "GraphQL")
}
点击"运行"按钮,应该可以看到以下结果:
{
"data": {
"hello": "Hello GraphQL"
}
}
这说明GraphQL schema已经成功地在Django项目中起作用了。
4. 示例二:使用数据库查询
在第一个示例中,我们演示了如何使用GraphQL查询字符串。现在,我们将演示如何使用GraphQL查询Django数据库。
假设有一个Django模型,如下所示:
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=255)
author = models.CharField(max_length=255)
这个模型有title
和author
两个字段。现在,让我们创建GraphQL schema和resolver来查询这些数据。
在schema.py
文件中添加以下内容:
import graphene
from graphene_django import DjangoObjectType
from .models import Book
class BookType(DjangoObjectType):
class Meta:
model = Book
class Query(graphene.ObjectType):
books = graphene.List(BookType)
def resolve_books(root, info):
return Book.objects.all()
schema = graphene.Schema(query=Query)
这个schema定义了一个名为books
的查询字段,它返回所有的Book
对象。注意BookType
是DjangoObjectType
的子类,它将Django模型映射到GraphQL对象。
现在可以在GraphQL Playground中测试查询了。在浏览器中输入http://localhost:8000/graphql
来打开GraphQL Playground。然后在左侧的查询窗口中输入以下内容:
query {
books {
id
title
author
}
}
点击"运行"按钮,应该可以看到以下结果:
{
"data": {
"books": [
{
"id": "1",
"title": "Harry Potter and the Philosopher's Stone",
"author": "J.K. Rowling"
},
{
"id": "2",
"title": "The Lord of the Rings",
"author": "J.R.R. Tolkien"
}
]
}
}
这说明GraphQL schema已经成功地在Django项目中起作用了,并且可以查询数据库中的数据。
到此为止,这就是一个简单的“GraphQL在Django中的使用教程”的完整攻略。希望可以帮助你快速上手GraphQL在Django项目中的应用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:GraphQL在Django中的使用教程 - Python技术站