Some stuff that i used when developing with django
Project description
Introduction
Django app that expose a graphql schema as well as a graphiql interface.
User
Installation
pip install django-app-graphql
Configuration
in INSTALLED_APPS
you need to add:
'graphene_django',
'django_filters',
After all your apps you need to use this app (this is important otherwise some models won't be detected at all!):
'django_app_graphql',
The first thing you need to do is determine if you want your graphql server setupped
using graphene
or using ariadne
. In settings, write:
and select either ariadne or graphene.
Finally, in urls.py
of the entire project add the following line:
urlpatterns = [
...
path("graphqls/", include("django_app_graphql.urls")),
...
]
You have chosen graphene
The app needs to be deploy for last because otherwise it cannot detect all the Django models and their types.
You also need to configure the authentication proces. Hence you need t add "AUTHENTICATION_BACKENDS" in the settings.py
:
AUTHENTICATION_BACKENDS = [
"graphql_jwt.backends.JSONWebTokenBackend",
"django.contrib.auth.backends.ModelBackend"
]
After that, you need to properly configure the graphene, graphenedjango-extras and graphene-jwt. Add all these in your settings.py
:
GRAPHENE={
"SCHEMA": "django_app_graphql.graphene.schema.SCHEMA",
'SCHEMA_OUTPUT': 'graphql-schema.json',
'SCHEMA_INDENT': 2,
'MIDDLEWARE': [
"graphql_jwt.middleware.JSONWebTokenMiddleware",
"django_app_graphql.middleware.GraphQLStackTraceInErrorMiddleware",
],
}
GRAPHENE_DJANGO_EXTRAS = {
'DEFAULT_PAGINATION_CLASS': 'graphene_django_extras.paginations.LimitOffsetGraphqlPagination',
'DEFAULT_PAGE_SIZE': 20,
'MAX_PAGE_SIZE': 50,
'CACHE_ACTIVE': True,
'CACHE_TIMEOUT': 300 # seconds
}
# see https://django-graphql-jwt.domake.io/en/latest/refresh_token.html
GRAPHQL_JWT = {
# This configures graphql-jwt to add "token" input at each request to be authenticated
'JWT_ALLOW_ARGUMENT': True,
'JWT_ARGUMENT_NAME': "token",
'JWT_VERIFY_EXPIRATION': True,
'JWT_EXPIRATION_DELTA': timedelta(minutes=30),
'JWT_ALGORITHM': "HS256",
'JWT_REFRESH_EXPIRATION_DELTA': timedelta(days=7),
'JWT_AUTH_HEADER_PREFIX': "Bearer",
}
You have chosen ariadne
In settings.py
add:
INSTALLED_APPS = [
...
"ariadne.contrib.django",
]
Add templates (otherwise the playground won't work):
TEMPLATES = [
{
...,
'APP_DIRS': True,
...
},
]
Ariadne is in unstable development (I don't know if it will ever be supported)
Generic tweaks
Finally you can configure this app, for instance:
DJANGO_APP_GRAPHQL = {
"BACKEND_TYPE": "graphene",
"EXPOSE_GRAPHIQL": True,
"GRAPHQL_SERVER_URL": "",
"ENABLE_GRAPHQL_FEDERATION": True,
"SAVE_GRAPHQL_SCHEMA": "output/schema.graphql"
}
Developer
Update new version (only for developers)
pmakeup update-version-patch build upload-to-pypi
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for django_koldar_utils-1.18.21-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f39eab7ccb9b2b9c6db4e9892a5f288bafa9d8772632a80f30479897a32425d3 |
|
MD5 | f1580cd74151388b723a80fb2af7d2ce |
|
BLAKE2b-256 | fd735cf0a4d4de420f3b6ef0b85185b6dcb7c3893dc307a7ce7623ea19323671 |