问题标签 [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.

0 投票
1 回答
749 浏览

django - 使用 pytest 进行测试时,石墨烯查询无限期挂起

我正在尝试测试我的后端,用 Django 2.2.2 和 Python 3 编写。我创建了一些 graphql 查询,这些查询在使用 graphql Web 界面进行测试时肯定可以工作。然而,当使用 pytest 和石墨烯测试客户端进行测试时,这些查询总是会无限期地挂起。我整理了一个可重现的示例,该示例实际上基于graphene-django 文档中的代码示例。

test_example.py:

此示例的行为方式相同(永远停止,没有错误)。我正在使用最新的 graphene-django (2.3.2) 和 pytest (4.6.3)。我可能还应该提到我在 Docker 容器中运行它。任何想法为什么会发生这种情况?这是 graphene-django 库中的错误吗?

0 投票
1 回答
712 浏览

django - 如何将graphql查询中的查询集列表作为单独的列表元素返回?

我面临的问题是我有custom_filter哪个MyModel返回<QuerySet>喜欢的列表

对象类型

询问

如何处理查询集列表。查询的 graphql 响应应该给出一个列表,其中包含查询集作为元素。

如何在不同的列表元素中获取不同查询集的结果?数量<QuerySet>不固定。

我必须做些什么来实现这一目标?

0 投票
2 回答
989 浏览

django - 对于石墨烯形式突变的不可空字段错误,无法返回空值

我正在尝试一个带有表单的石墨烯-django 示例。但我得到下一个错误:

`graphql.error.base.GraphQLError:无法为不可为空的字段 [MyMutationPayload.name] 返回 null。

我尝试在 perform_mutate 函数内的返回表达式中设置值。如果请求未执行所有变体,则它不起作用。

询问

变量

回复

变异结果应显示所有错误或所有表单值。

0 投票
1 回答
815 浏览

graphene-django - DjangoObjectType 的 graphene-django 自定义 get_queryset 不起作用

在官方文档中:https ://docs.graphene-python.org/projects/django/en/latest/queries/#default-queryset 。在实践中什么都没有发生。请帮忙。下面,例如,我只有简单的部分代码,模型联系人有 3 个字段(id、种类、值)。我希望始终使用 kind='PHONE' 过滤 ContactType。

查询:

返回:

代替:

0 投票
1 回答
269 浏览

python - 如何更改响应数据上 DjangoObjectType 字段的名称

现在我有一个 django 模型。

并将其附加到DjangoObjectType.

现在我需要将logo_url响应的字段名称更改为如下所示,--logo-url而不是logoUrl这样我才能获得所需的结果。

更新

这个功能很难实现!我能够扩展一个 objecttype 元并成功地组成了所需的字段名称结构,但石墨烯标准不允许我这样做:

0 投票
0 回答
175 浏览

python - 如何在 Django Graphene 查询中公开 Wagtail 搜索?

给定一般结构:

我想创建一个“SearchFilter”来公开 wagtail 搜索功能,因为我最终想通过 graphql 执行全文搜索,如下所示:

“搜索”不是 Django 模型上的字段,这就是我在 Django FilterSet 中创建自定义字段的原因。我的想法是做类似的事情:

但是,我很好奇是否有更好的模式更有效。至少,我想确保最后添加 SearchFilter(因此首先过滤搜索的查询)。

是否应该将“搜索”移出 FilterSet 并移到查询/节点/自定义连接中,如果是这样,我如何在“文章”中添加一个附加字段以将其视为解决文章的最后一步(即添加它到过滤器查询集的末尾)?如果这确实属于单独的连接,是否可以将该连接与 django 过滤器连接结合起来?

我认为这种通过石墨烯访问 Wagtail 搜索的模式已经存在,但是我没有运气在文档中找到它。

0 投票
2 回答
984 浏览

python - 无效的凭据引发身份验证突变异常

我在我的 django 项目中使用了 graphene-django 和 django-graphql-jwt。当我设置无效凭据时,服务器会引发“无效凭据”异常。

无效凭据是否应该在服务器上引发异常?当我用错误的数据测试 tokenAuth 突变时,Django 服务器会引发异常。

Django服务器日志:

0 投票
1 回答
34 浏览

graphene-django - 如何避免在 mutate() 函数中使用过多的参数?

变异函数在执行更新操作时需要很多参数。根据官方石墨烯文档,我可以使用 ( parent , root , obj ) 对象来访问我的类对象。

我尝试使用 parent、root 和 obj 来访问可变数据,但没有成功。

"errors": [{ "message": "mutate() got an unexpected keyword argument 'event_description'"}]

将所有变量放入 mutate 函数中效果很好,但这是一种丑陋的方式。我该如何处理?

0 投票
1 回答
838 浏览

python - DJANGO-GRAPHQL-JWT:我们如何知道刷新令牌发布后的年龄?

概述

基于长期运行刷新令牌的设置部分中的概念。

这意味着您需要每 5 分钟刷新一次 [访问令牌],并且您需要在刷新令牌发出后 7 天内更换您的刷新令牌。

这将使用户能够保持刷新令牌会话,只要我们可以在 7 天内刷新它例如 'JWT_REFRESH_EXPIRATION_DELTA': timedelta(days=7))。

请注意,您不能使用过期的刷新令牌进行调用refreshToken(refreshToken: $refreshToken),因为这可能会导致"message": "Refresh token is expired".

问题

现在这里的难题是我们如何知道刷新令牌将在 7 天后过期?所以我们可以创建一个逻辑来检查它是否还有 1 天的会话时间然后触发refreshToken()突变?

结论

在不知道刷新令牌的到期日期的情况下,开发人员将不得不集成存储在客户端发布刷新令牌之后的日期,以确定刷新令牌的年龄。

好吧,如果我遗漏了一些东西,也许已经有一种简单的方法来处理刷新令牌到期日期的检查?

0 投票
1 回答
789 浏览

python - 验证并处理错误以将有意义的状态传递回客户端

我正在使用graphene-django而不是rest api(休息框架)。我正在处理用户注册。在其余框架中,验证是在序列化程序部分完成的,但是在使用时graphene我如何验证和处理错误以将有意义的状态传递给客户端?

这是注册码

一个示例可以是验证是否已存在具有电子邮件的用户