дизайн папки при использовании 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/

Другие вопросы по тегам