Http-запрос Django в графеновой схеме - PullRequest
0 голосов
/ 05 июня 2018

Как мне получить объект http-request-session в схеме графена?

Я сохранил значения сомов в сеансе запроса, к которому мне нужен доступ.Возможное решение - отправить идентификатор сеанса во внешний интерфейс, а затем передать его в запрос post, но это не похоже на хорошее решение.

Графен имеет context_value, но я не понимаю, как яработает.

В мои Django-представления я помещаю это:

schema = graphene.Schema()
schema.execute('{ viewer }', context_value={'session': request.session})

В моей графеновой схеме, если я пытаюсь сделать так, как описано в руководстве (https://github.com/graphql-python/graphene/blob/master/docs/execution/execute.rst), там написано

Объект 'WSGIRequest' не имеет атрибута 'get'

class Query(graphene.ObjectType):
  viewer = graphene.Field(Viewer)

  def resolve_viewer(self, info):
    info.context.get('session')
    print(info.context.session.keys()) #an empty array
    return Viewer()

1 Ответ

0 голосов
/ 05 июня 2018

Вы можете получить доступ к сеансу Django в методе разрешения с помощью info.context.session

Например,

print("session:", info.context.session)
print("keys:", info.context.session.keys())

в выходах резольвера для меня

session: <django.contrib.sessions.backends.db.SessionStore object at 0x7fa98e6ddac8>
keys: dict_keys(['_auth_user_id', '_auth_user_backend', '_auth_user_hash'])

Некоторые вещи, которые вы можете проверить для отладки:

  1. убедитесь, что промежуточное ПО сеанса настроено

  2. , если вы создаетеschema объект в Django, желаемый формат: result = schema.execute(query, context_value=request) - более подробно см. мой ответ на Запросах GraphQL в Django, возвращающих None

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...