问题标签 [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.
python - 如何创建/更新 2 个对象 [Django Rest Framework]
我是 django rest 框架的新手,我正在尝试在同一个请求中创建/更新 2 个对象:
这是最好的方法吗?或者我错过了什么?
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
属性中。我错过了什么吗?
python - django rest framework viewset 基于方法的权限
因此,我正在使用 DRF 编写我的第一个项目,并且在为我的视图集设置权限时遇到了一些问题。我已经使用 djangorestframework-jwt 进行了身份验证。目前,我定义了几个不同的 ViewSet。我想做的是允许模型对象的所有者对该对象进行他们想要的任何更改,但阻止其他人(除了管理员)甚至查看对象。基本上,我需要一种将权限类应用于特定方法的方法,以仅允许管理员查看“列表”、所有者“更新、销毁等”以及经过身份验证的用户“创建”。目前我有这样的事情:
有一个模型
以及我要应用的权限类
我确信可以通过编写完全自定义的视图来实现这一点,但我有一种直觉,有一种更简单的方法可以做到这一点,特别是因为这基本上是我完成 API 所要做的最后一件事。感谢您的帮助,如果您需要更多信息,请告诉我。
python - django rest框架detail_route在get方法中不起作用
我使用ModelViewSet
如下定义了一个视图集
我试图重新定义GET
方法来做一些事情,比如从 celery 获取东西。但是这部分代码是行不通的,它就像一个标准的API,并没有做我在get_job_detail
函数中写的东西。
我应该如何正确定义“detail_route”函数。
视图.py
网址.py
python - Django Rest Framework - 在 ModelViewSet 中缓存“列表”功能但不缓存“检索”功能(详细信息)
我有以下代码:
我想迁移到:
我的目标是缓存ListView
60 秒,但不缓存DetailView
(总是从那里返回最新数据,因为它用于长时间拉取)。
我得到的错误是:
TypeError: never_cache() missing 1 required positional argument: 'view_func'
一起移除never_cache
装饰器是否合理?
django - 如何保存具有关系的modelSerializer?- django
我想通过 django-rest-framework 将发送的 json 数据保存到 db。问题是,不保存关系并返回错误。
下面的片段是我的模型:
我使用下面的序列化程序来序列化/反序列化Klass
模型。
现在,当我准备一个 JSON 对象并将其发送到视图时,它会返回错误。下面是视图类:
错误是:
该
.create()
方法默认不支持可写嵌套字段。.create()
为 serializer编写显式方法mainp.serializers.KlassSerializer
,或read_only=True
在嵌套的序列化器字段上设置。
如何保存关系KlassSerializer
以保存到数据库?
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() 方法。我知道我错过了一些东西,但无法弄清楚是什么。
django - 如何设置需要来自 POST 请求的信息的 DJANGO REST?
我正在尝试构建一个基于类的 Django REST API,它从 POST 请求中获取数据并输出相关数据。
我有数据库中的建筑物列表
用户将通过 POST 请求(即加利福尼亚州)提供状态,API 应返回适当的建筑物(即金门大桥,TransAmerica)
我想我只是很难理解这个类是如何接受 request.data ['state_id'] 的。我应该使用 APIView 吗?这么多的问题!
到目前为止,我的 view.py 中有这个
这是在我的 serializer.py
这是我的 url.py:
python - 如果 queryset 和 get_queryset 都定义在从 GenericViewSet 继承的 Django ViewSet 上会发生什么
我继承了一些 Django 代码,我正在努力弄清楚以前的开发人员对他们的代码的意图。
配置了一个 ViewSet,它继承自 GenericViewSet。在类中,它定义了一个queryset
变量,但也定义了一个get_queryset
方法。我正在努力从文档和教程中弄清楚这甚至意味着什么?更有趣的是,该get_queryset
方法返回一个类型的查询集,但queryset
变量定义了不同的类型。
我希望将两个查询集结合起来(这是所需的行为,并且似乎发生在一台服务器上,而不是另一台服务器上,因此需要进行一些额外的调查才能找出原因)
下面的代码: