An app to automatically add GraphQL support to a Wagtail website
Project description
wagtail-graphql
An app to automatically add GraphQL support to a Wagtail website
This Wagtail app adds GraphQL types to other Wagtail apps. The objective is for this library to interact with an existing website in a generic way and with minimal effort. In particular, it makes minimal assumptions about the structure of the website to allow for a generic API.
Installing / Getting started
To install as a general app:
pip install wagtail-graphql
Add it together with graphene_django to the Django INSTALLED_APPS:
INSTALLED_APPS = [
...
'wagtail_graphql',
'graphene_django',
...
]
Initial Configuration
Add the required graphene schema GRAPHENE
and a GRAPHQL_API
dictionary.
Include all the Wagtail apps the library should generate bindings to in the APPS
list and optionally specify the prefix for each app in PREFIX
. To remove a leading part of all the urls for a specific site, specify the URL_PREFIX
parameter for each needed host.
GRAPHENE = {
'SCHEMA': 'wagtail_graphql.schema.schema',
}
GRAPHQL_API = {
'APPS': [
'home'
],
'PREFIX': {
'home': '' # optional, prefix for all the app classes generated by the wrapper
},
'URL_PREFIX': {
'localhost': '/home' # optional, read from the site information if not specified
}
}
The example above generates bindings for the home
app, . Every url in this example
will be stripped of the initial /home
substring.
Finally, set up the GraphQL views in the project urls.py
.
For example, to add two endpoints for GraphQL and the GraphiQL IDE:
from django.views.decorators.csrf import csrf_exempt
from graphene_django.views import GraphQLView
urlpatterns = [
...
url(r'^api/graphql', csrf_exempt(GraphQLView.as_view())),
url(r'^api/graphiql', csrf_exempt(GraphQLView.as_view(graphiql=True, pretty=True)),
...
]
Note that the urls above need to appear before the wagtail_urls
catchall entry.
Images
To be able to generate urls for images the following also needs to be included in the project's urls.py
:
from wagtail.images.views.serve import ServeView
urlpatterns = [
...
url(r'^images/([^/]*)/(\d*)/([^/]*)/[^/]*$', ServeView.as_view(), name='wagtailimages_serve'),
...
]
Multi-site configuration
This library works transparently with a multi-site Wagtail install without any extra configuration required. To strip a custom leading prefix for each site, specify each host in the URL_PREFIX
. For exaple, for two hosts host1.example.com
and host2.example.com
:
GRAPHQL_API = {
...
'URL_PREFIX': {
'host1.example.com': '/prefix1',
'host2.example.com': '/prefix2'
}
...
}
Note that the prefix for a site is taken from the root page url if a host is not included in the URL_PREFIX
dictionary.
Developing
To develop this library, download the source code and install a local version in your Wagtail website.
Features
This project is intended to require minimal configuration and interaction. It currently supports
- Page models
- Snippets
- Images
- Documents
- StreamFields with Basic Blocks and StructBlocks
Contributing
If you'd like to contribute, please fork the repository and use a feature branch. Pull requests are welcome.
Links
- Repository: https://github.com/tr11/wagtail-graphql
- Issue tracker: https://github.com/tr11/wagtail-graphql/issues
Licensing
The code in this project is licensed under MIT license.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file wagtail-graphql-0.3.0.tar.gz
.
File metadata
- Download URL: wagtail-graphql-0.3.0.tar.gz
- Upload date:
- Size: 16.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.0.0a1 CPython/3.7.2 Linux/5.0.2-arch1-1-ARCH
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bacce50d7ee71eec13a2c89fdf25effff7cf3b9808f48c48755db2f227031f15 |
|
MD5 | 47fc8713c876439e8b33eefe99a07cb3 |
|
BLAKE2b-256 | b7b5cfe77909286598aea28145f46b2eba9ff98d95b587dcb4cea03c07d478b4 |
File details
Details for the file wagtail_graphql-0.3.0-py3-none-any.whl
.
File metadata
- Download URL: wagtail_graphql-0.3.0-py3-none-any.whl
- Upload date:
- Size: 58.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.0.0a1 CPython/3.7.2 Linux/5.0.2-arch1-1-ARCH
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2caaadb9da90fbfc16bd83a5a594a4c5863963fdf6fc2a35cac488b801ef6c7c |
|
MD5 | dc4f5e53fcc269027b62c6b873e3564b |
|
BLAKE2b-256 | d1b5113159aebe32dfba01ca47f741b3c94895bce16a2dcdfe89d66690b8092d |