问题标签 [django-rest-viewsets]

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 回答
110 浏览

python - 如何创建/更新 2 个对象 [Django Rest Framework]

我是 django rest 框架的新手,我正在尝试在同一个请求中创建/更新 2 个对象:

这是最好的方法吗?或者我错过了什么?

0 投票
0 回答
393 浏览

django - Django rest 分页下一个 url 不正确

我使用 ModelViewSet 创建了一个 Django rest api。在暂存中部署,现在在生产中。生产工作正常,但暂存有一些不正确的“下一个”网址。

在此处输入图像描述 在此处输入图像描述

查看两个图像中的键“next”,第一个图像是暂存响应,第二个是生产响应。在暂存下一个键中,“nub.staging.scoretrends.com”出现两次。两个环境中使用相同的代码。工作在本地主机中也很好。是什么让它发生了这样的事情?ModelViewSet 如下所示。

这是我使用过的 django rest 配置

0 投票
2 回答
3725 浏览

python - DRF 响应内容类型在测试期间设置为无

我正在使用 Django Rest Framework(版本 3.6.2)来创建 REST API。我已经定义了我的视图集,它继承自GenericViewSet并具有重写retrieve方法来实现自定义行为。

我希望在从浏览器访问此端点时拥有 BrowsableAPI,并在访问此端点json时接收响应,例如从代码中。我已经使用以下设置配置了 DRF:

一切都按预期工作,我可以从浏览器访问可浏览的 API,当使用 Postman 工具发出请求时,我得到 json 响应。不幸的是,我在测试期间无法获得相同的结果。

我希望响应将 content_type 设置为application/json(这是我可以在浏览器和 Postman 的响应中看到的标题)。但此测试失败 -response.content_type设置为None. 在调试这个测试时,我发现response._headers字典看起来像这样

所以似乎正在设置正确的标题,但它没有填充到content_type属性中。我错过了什么吗?

0 投票
1 回答
3564 浏览

python - django rest framework viewset 基于方法的权限

因此,我正在使用 DRF 编写我的第一个项目,并且在为我的视图集设置权限时遇到了一些问题。我已经使用 djangorestframework-jwt 进行了身份验证。目前,我定义了几个不同的 ViewSet。我想做的是允许模型对象的所有者对该对象进行他们想要的任何更改,但阻止其他人(除了管理员)甚至查看对象。基本上,我需要一种将权限类应用于特定方法的方法,以仅允许管理员查看“列表”、所有者“更新、销毁等”以及经过身份验证的用户“创建”。目前我有这样的事情:

有一个模型

以及我要应用的权限类

我确信可以通过编写完全自定义的视图来实现这一点,但我有一种直觉,有一种更简单的方法可以做到这一点,特别是因为这基本上是我完成 API 所要做的最后一件事。感谢您的帮助,如果您需要更多信息,请告诉我。

0 投票
1 回答
1193 浏览

python - django rest框架detail_route在get方法中不起作用

我使用ModelViewSet如下定义了一个视图集

我试图重新定义GET方法来做一些事情,比如从 celery 获取东西。但是这部分代码是行不通的,它就像一个标准的API,并没有做我在get_job_detail函数中写的东西。

我应该如何正确定义“detail_route”函数。

视图.py

网址.py

0 投票
0 回答
743 浏览

python - Django Rest Framework - 在 ModelViewSet 中缓存“列表”功能但不缓存“检索”功能(详细信息)

我有以下代码:

我想迁移到:

我的目标是缓存ListView60 秒,但不缓存DetailView(总是从那里返回最新数据,因为它用于长时间拉取)。

我得到的错误是: TypeError: never_cache() missing 1 required positional argument: 'view_func'

一起移除never_cache装饰器是否合理?

0 投票
2 回答
558 浏览

django - 如何保存具有关系的modelSerializer?- django

我想通过 django-rest-framework 将发送的 json 数据保存到 db。问题是,不保存关系并返回错误。

下面的片段是我的模型:

我使用下面的序列化程序来序列化/反序列化Klass模型。

现在,当我准备一个 JSON 对象并将其发送到视图时,它会返回错误。下面是视图类:

错误是:

.create()方法默认不支持可写嵌套字段。.create()为 serializer编写显式方法mainp.serializers.KlassSerializer,或read_only=True在嵌套的序列化器字段上设置。

如何保存关系KlassSerializer以保存到数据库?

0 投票
1 回答
1790 浏览

python - 尝试检索单个资源时,DRF ViewSet 中不允许方法 GET

我是新的 Python 和 Django。我创建了 ViewSet 如下:

api/views.py

api/urls.py

这适用于创建新资源的 POST 请求、获取所有资源的 GET 请求、更新资源的 PUT 请求和删除资源的 DELETE 请求。但是我怎样才能检索单个资源?当我提出请求时http://127.0.0.1:8000/api/users/1/,它显示错误 -

{ "detail": "方法 \"GET\" 不允许。" }

这意味着永远不会调用 UserDetails 中的 retrieve() 方法。我知道我错过了一些东西,但无法弄清楚是什么。

0 投票
1 回答
63 浏览

django - 如何设置需要来自 POST 请求的信息的 DJANGO REST?

我正在尝试构建一个基于类的 Django REST API,它从 POST 请求中获取数据并输出相关数据。

我有数据库中的建筑物列表

用户将通过 POST 请求(即加利福尼亚州)提供状态,API 应返回适当的建筑物(即金门大桥,TransAmerica)

我想我只是很难理解这个类是如何接受 request.data ['state_id'] 的。我应该使用 APIView 吗?这么多的问题!

到目前为止,我的 view.py 中有这个

这是在我的 serializer.py

这是我的 url.py:

0 投票
3 回答
1626 浏览

python - 如果 queryset 和 get_queryset 都定义在从 GenericViewSet 继承的 Django ViewSet 上会发生什么

我继承了一些 Django 代码,我正在努力弄清楚以前的开发人员对他们的代码的意图。

配置了一个 ViewSet,它继承自 GenericViewSet。在类中,它定义了一个queryset变量,但也定义了一个get_queryset方法。我正在努力从文档和教程中弄清楚这甚至意味着什么?更有趣的是,该get_queryset方法返回一个类型的查询集,但queryset变量定义了不同的类型。

我希望将两个查询集结合起来(这是所需的行为,并且似乎发生在一台服务器上,而不是另一台服务器上,因此需要进行一些额外的调查才能找出原因)

下面的代码: