问题标签 [graphene-django]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
interface - 界面中包含的 Graphql 类型未添加到 graphene-django 中的模式
我有一个由两种具体类型实现的接口类型
使用石墨烯-django:
只要某些查询或突变直接使用Type1
和,这就会起作用Type2
。但在我的情况下,它们只是通过InterfaceType
.
问题是当我尝试请求aField
或anotherField
通过内联片段时:
使用反应阿波罗:
我得到错误"Unknown type "Type1". Perhaps you meant ..."
这就像类型没有添加到架构中,因为它们没有直接使用 - 但我仍然需要它们才能查询aField
和anotherField
.
你能发现上面的错误吗?
django - AssertionError: You need to pass a valid Django Model in UserProfile.Meta, received "None"
I'm adding Django Model to a graphql api using the AbstractBaseUser custom user model. The Admin works fine except that I get an error when trying to access the graphql api, 'You need to pass a valid Django Model in UserProfile.Meta, received "None"'
I've tried adding AUTH_USER_MODEL = 'noxer_app.MyUser' to settings, yet it doesn't work
In models.py:
app.schema.py
I expect to see the Graphql api interface, but I get this error:
You need to pass a valid Django Model in UserProfile.Meta, received "None".
graphql - GraphQLError 未知类型“XYZMutationInput”
如何为 DRF 序列化程序创建 graphql 输入类型?
我正在使用 django rest 框架 (DRF) 序列化程序graphene-django
,并且我能够看到在中CreateThingMutationInput
定义的类型graphiql
:
但是,我无法运行:
我得到:
具有以下内容:
我也试过:
以及尝试定义一个:
我还可以看到从graphql-codegen
in定义的类型types.d.ts
:
有关的:
permissions - 在 graphene-django 中分离公共和私有 API 的推荐最佳实践是什么?
我已经看到了许多关于如何在石墨烯中实施许可系统的讨论,但除了这些讨论之外,还没有看到任何明确的实际结果。关于该主题的一些讨论示例如下:
不幸的是,这些都没有推荐在石墨烯中实现权限的首选方法。有谁知道目前这样做的最佳做法是什么?
django - 如何在石墨烯中格式化日期和日期时间
我希望石墨烯输出正常的日期/日期时间格式。默认情况下,它返回:
我希望它返回这个:
石墨烯字典中似乎没有这样的选项,但我仍然想graphene_django.DjangoObjectType
使用它的 Meta 类,而不是重写所有字段 w/graphene.ObjectType
graphene-python - 在石墨烯 graphql 查询中返回 django 模型属性字段
如何@property
从 django 模型 graphql 结果中添加字段?:
django - 如何有条件地记录 graphene-django 中的异常?
每当引发异常时,它们都会记录在控制台中(如果使用了 Sentry,则记录在 Sentry 中)。
其中许多例外仅旨在向用户显示。例如,django-graphql-jwt
引发PermissionDenied
login_required
装饰器异常。
问题是这会在测试/开发期间污染控制台输出,并在生产期间将有效错误记录到 Sentry。对于上述示例等例外情况,这仅旨在向用户显示,而不是记录。
作为一种解决方法,我尝试编写中间件来捕获任何抛出的异常:
但是,如果异常被捕获或未返回,它将不再填充errors
查询/变异输出中的字段。因此记录所有错误,没有办法有条件地记录异常。
这意味着唯一的解决方案是创建一个日志过滤器,如下所示:
record.exc_info
但这也不起作用,因为None
每当 Graphene 抛出错误时,因此无法根据异常类型有条件地过滤掉异常。
有解决方案吗?这似乎是一个常见问题,但我找不到任何解决方案。
或者,我不能使用异常向 API 用户显示错误,但这意味着将错误放入查询结果的data.errors
字段而不是errors
. 这是一个标准,需要适配前端逻辑(比如 Apollo 的错误处理),并不理想。这也意味着无法从引发异常的第三方库(如 django-graphql-jwt)中使用任何功能。
graphql - 石墨烯无法在 SerializerMutation 中将字符串转换为浮点数
SerializerMutation
假设是从 base64 转换为ID!
pk 吗?是否有一些前端/后端帮助工具来帮助转换?我一直无法找到任何具体的东西。
示例创建事物突变:
示例查询:
示例ID!
:
编辑,我一直未能转换,ID
所以我有"20"
,只是转换了类型:
关于是否有任何实用工具可以自动将提交的数据转换为突变的问题仍然存在。
django - 返回 CSRF_FAILURE_VIEW 的 GraphiQL 查询
我只是在做教程@ https://docs.graphene-python.org/projects/django/en/latest/tutorial-plain/来理解 Django 2 中的 graphQL 和 graphene。
我有一段时间没用过 Django,tut 似乎适用于 Django 11。当我尝试这样的 GraphQL 查询时,我得到了一个 CSRF_FAILURE_VIEW:
底层 json 夹具如下所示:
原谅一个菜鸟,但 Django 2 一定有什么改变?我需要应用其他设置吗?
在 settings.py 我有:
我的文件夹结构与 tut 略有不同,因为我的配料应用程序没有嵌套在我的食谱应用程序中。食谱应用程序是主应用程序,如下所示:
django - GraphQL 变异以创建外键地址和人员
我看过很多关于外键突变的文章,但没有任何帮助。
我需要使用 django 模型 Person 创建一个人,该人的地址是 Address 模型的外键。一个人需要一个地址!
我在 django 中的模型是:
我的模式中的突变是:
我正在使用 GraphiQL 进行测试,我的变异 atm 如下所示:
我得到的输出是: