дизайн папки при использовании ariadne в django
Я пытаюсь изучить Ариадну в своем проекте django. Однако мне крайне сложно создать структуру папок, так как я не вижу много примеров, посвященных этому. Также я не нашел ни одного учебника. Везде делается один и тот же способ: каждый код вschema.py
.
Вот пример
from ariadne import QueryType, make_executable_schema
type_defs = """
type Query {
hello: String!
}
"""
query = QueryType()
@query.field("hello")
def resolve_hello(*_):
return "Hello world!"
schema = make_executable_schema(type_defs, query)
Как бы вы спроектировали свои папки в большом приложении django, где есть, скажем, более 10-15 приложений, таких как учетные записи, продукты, обзоры и т. Д.? Если мы используем простой django, он уже дает следующую структуру
app_name
views.py
urls.py
models.py
но если мы хотим использовать ariadne в django и учитывать грубые особенности каждого приложения, как бы вы теперь разработали свой проект?
1 ответ
У меня был тот же вопрос, и в итоге моя схема и преобразователи были разделены между моими приложениями Django. Вот так:
project
app_1
models.py
resolvers.py
schema.graphql
app_2
models.py
resolvers.py
schema.graphql # graphql types relevant to this app
project
wsgi.py
urls.py
settings.py
graphql_config.py # here I tie together all my schemas and resolvers
schema.py # this schema file has my root Query and Mutation types
В моем примере выше мой graphq_config.py
выглядит так:
from ariadne import QueryType, make_executable_schema, load_schema_from_path,
import app_1.resolvers
import app_2.resolvers
type_defs = [
load_schema_from_path("project/schema.graphql"),
load_schema_from_path("app_1/schema.graphql"),
load_schema_from_path("app_2/schema.graphql"),
]
query = QueryType()
query.set_field("type_1", app_1.resolvers.type_1_resolver)
query.set_field("type_2", app_2.resolvers.type_2_resolver)
schema = make_executable_schema(type_defs, query)
В любом случае, я написал об этом более подробно в блоге здесь: https://perandrestromhaug.com/posts/guide-to-schema-first-graphql-with-django-and-ariadne/