如何将http-request-session对象转换为石墨烯模式?
我已经在需要访问的请求会话中存储了som值。一种可能的解决方案是将session-id发送到前端,然后将其传递给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()
答案 0 :(得分:1)
您可以使用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'])
您可以检查调试的一些事项:
确保会话中间件已配置
如果您在Django中构建schema
对象,则所需的格式为result = schema.execute(query, context_value=request)
- 有关详细信息,请参阅我在GraphQL queries in Django returning None的答案