一个Wagtail包,可加快并简化实现GraphQL端点的操作!
项目描述
Wagtail Grapple
一个易于构建GraphQL端点的库,让您可以从任何地方轻松处理Wagtail数据!
关于项目
Python和Django有各种GraphQL包。然而,要使这些包与现有基础设施无缝工作,而不出现错误,并不像看起来那么简单。
Grapple的目的是尽可能快地按模型模型地构建GraphQL端点。设置和配置已设计得尽可能简单,同时也提供最佳功能;无需编写复杂的序列化器 - 只需在您的模型中添加一个graphql_fields
列表即可(尽管如果您想更深入地了解,也可以!)。
功能
- 通过在模型中添加一个小注解,轻松创建GraphQL类型。
- 支持传统的Wagtail模型
- 页面(包括StreamField和Orderables)
- 片段
- 图片
- 文档
- 媒体(通过wagtailmedia)
- 设置
- 重定向
- 搜索(所有模型上)
- 自定义图片和文档模型支持
- 分页支持
- 中间件支持
构建于
这个库是在Graphene和Graphene Django之上抽象出来的,并大量依赖它们。
入门
安装Grapple的设计尽可能简单!
先决条件
Python >= 3.8
Wagtail >= 5.2
Django >= 4.2
安装
使用pip安装
python -m pip install wagtail_grapple
将以下内容添加到您的Wagtail设置文件中的INSTALLED_APPS
列表中
INSTALLED_APPS = [
# ...
"grapple",
"graphene_django",
# ...
]
将以下内容添加到相同的设置文件底部,其中每个键是要此库扫描的应用,值是要给GraphQL类型提供的名称前缀(您通常可以将其留空)
# Grapple config:
GRAPHENE = {"SCHEMA": "grapple.schema.schema"}
GRAPPLE = {
"APPS": ["home"],
}
将GraphQL URL添加到您的urls.py
from django.urls import include, path
from grapple import urls as grapple_urls
# ...
urlpatterns = [
# ...
path("api/", include(grapple_urls)),
# ...
]
完成!现在您可以继续配置模型,以生成采用其结构的GraphQL类型::tada: 您的GraphQL端点在http://localhost:8000/api/graphql/
用法
以下是从Wagtail文档中的默认页面获取的GraphQL模型配置示例
# ...
from grapple.models import GraphQLString, GraphQLStreamfield
class BlogPage(Page):
author = models.CharField(max_length=255)
date = models.DateField("Post date")
body = StreamField(
[
("heading", blocks.CharBlock(classname="full title")),
("paragraph", blocks.RichTextBlock()),
("image", ImageChooserBlock()),
]
)
content_panels = Page.content_panels + [
FieldPanel("author"),
FieldPanel("date"),
StreamFieldPanel("body"),
]
# Note these fields below:
graphql_fields = [
GraphQLString("heading"),
GraphQLString("date"),
GraphQLString("author"),
GraphQLStreamfield("body"),
]
有关更多示例,请参阅文档
贡献
贡献使开源社区成为一个如此神奇的地方,可以学习、灵感和创造。您所做出的任何贡献都都受到高度赞赏。
- 复制项目
- 创建您的功能分支(
git checkout -b feature/amazing-feature
) - 提交您的更改(
git commit -m 'Add some amazing feature'
) - 将更改推送到分支(
git push origin feature/amazing-feature
) - 打开拉取请求
本地开发
- 在您选择的Python环境中,导航到
tests/
- 运行
python -m pip install -r requirements.txt
- 运行
python manage.py migrate
- 运行服务器
python manage.py runserver
- 运行测试
python manage.py test
使用Postgres
- 确保您有docker和docker compose
- 运行
docker compose up
- 运行
export DATABASE_URL="postgres://postgres:postgres@localhost/postgres"
- 在您选择的Python环境中,导航到
tests/
- 运行
python -m pip install -r requirements.txt
- 运行
python manage.py migrate
- 运行服务器
python manage.py runserver
- 运行测试
python manage.py test
兼容性
Wagtail Grapple支持
- Python 3.8、3.9、3.10、3.11和3.12
- Wagtail >= 5.2
许可证
在MIT许可证下分发。有关更多信息,请参阅LICENSE
灵感来源于
项目详情
下载文件
下载适用于您平台的文件。如果您不确定该选择哪个,请了解有关安装包的更多信息。
源分布
wagtail_grapple-0.27.0.tar.gz (38.9 kB 查看散列值)
构建分布
wagtail_grapple-0.27.0-py3-none-any.whl (49.0 kB 查看散列值)