问题标签 [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 投票
0 回答
470 浏览

django - Django rest 框架在视图集中使用 serializer_class @detail_route

我正在使用带有很多@detail_routeand的视图集@list_route。在普通视图集中,我使用serializer_class,然后在序列化程序中进行一些验证,但在@detail_route

我正在视图中创建序列化程序并在这里检查验证 - 我知道它很糟糕。

我的问题是如何像平常一样@detail_route使用modelviewset而无需手动创建序列化程序但serializer_class在装饰器中使用。

它可以在没有任何附加代码的情况下进行分页@detail_route吗?

重构代码和移动@detail_route以及@list_route分离视图集或保留视图集方法更好吗?

0 投票
4 回答
10237 浏览

python - 'collections.OrderedDict' 对象没有属性 'pk' - django rest 框架

我有一个模型,我想update()为它写一个方法来更新。下面的代码片段是我的模型:

下面的代码片段是对应的Serializer

对于更新,我使用以下代码段:

但是当我用方法发送数据时PUT,它返回以下错误:

/api/class/49/ 处的 AttributeError

'collections.OrderedDict' 对象没有属性 'pk'

并且错误发生在serializer.update(instance=klass, validated_data=serializer.data)一行中。

0 投票
1 回答
77 浏览

django - 仅将 ModelSerializer 上的特定文件发送到客户端 - django rest 框架

我有一个Serializer如下:

我只想klass在一个视图中发送值并student在另一个视图中发送。我怎样才能做到这一点?

0 投票
1 回答
1931 浏览

django - 如何在 Django rest 框架的 ViewSet 中设置方法不需要身份验证

我有如下视图

此外,我在我的代码中使用基于 DRF 令牌的身份验证。我怎么能简单地说这种create方法不需要身份验证?如您所知,在使用令牌实现身份验证后,所有请求都应包含Token在标头中,任何没有的请求都会出现 403 错误。

0 投票
1 回答
289 浏览

python - Django Rest Framework 更改根项和列表项元素名称

我是 Django-Rest 框架的新手。我想根据模型名称更改根和列表项元素名称:

从:

至:

我已经根据此处的答案覆盖了 XMLRenderer ,但我不确定如何将其路由到我的视图。

我的观点:

修改XMLRenderer:

0 投票
1 回答
649 浏览

python - DJango REST Framework:向 ModelViewSet 创建方法添加附加功能

我正在尝试根据不同的主机请求向 django 服务器添加其他功能。

为此,我重写了 ModelViewSet 函数,并考虑在这些函数中添加功能。

我看到的是,当在检索列表(GET 请求)上设置断点时,调试器停止了。但是当试图中断创建更新(POST 请求)时,调试器并没有中断。

如何解决这个问题?

另一个细节(这实际上是问题的答案)是我使用管理界面来执行创建更新(与我使用 REST 框架的检索列表不同)。

Python 3.6.3 Django 1.11.7 djangorestframework 9.0.1

还要感谢任何其他可能的解决方案,用于在服务器端向不同的客户端请求添加功能。

0 投票
1 回答
778 浏览

django - 使用 Django 后端过滤器过滤范围?

我正在使用 django rest 框架进行项目,在该框架中我必须过滤用户给出的不同参数。我正在使用 django 过滤器后端。这是我的代码:

一切正常。但现在我必须根据 100 平方英尺到 500 平方英尺的范围过滤 property_area。我如何使用 djangoFilter 后端来实现这一点?

0 投票
1 回答
466 浏览

django - Django rest ModelViewSet 序列化程序创建失败

我有两个具有以下关系的模型:

我已经将序列化程序定义如下(我在为特定库创建阅读器时直接创建用户):

我正在编写一个 ModelViewSet 如下:

网址:router.register(r'readers/(?P<library_id>[0-9]+)', ReaderViewSet, base_name='readers')

我的 GET 调用成功,我将所有读者都放在了特定的库中。

我正在使用以下 JSON 数据进行 POST 调用:

并且还通过删除“which_library”但都给我错误:

我究竟做错了什么?

0 投票
2 回答
3040 浏览

django - Django rest ModelViewSet 多个具有不同 URL 的 GET 请求

我必须模型:一个图书馆可以有很多书。

现在我有一个在特定图书馆中对书籍执行 CRUD 的 URL:

router.register(r'books/(?P<library_id>[0-9]+)', BookViewSet, base_name='books')

和相应的观点:

我最初没有使用 ModelViewSet,而是使用了带有 @api_view 装饰器的函数,其中一个如下(返回最近两周添加的书籍,我为此函数有一个单独的 URL,即 api/books//new_arrivals):

在使用 ModelViewSets 时,我该怎么做?我必须添加另一个 URL,然后为 new_arrivals 编写另一个类或在现有 BookViewSet 中编写一个函数吗?在这种情况下如何实现处理这两个 GET 方法?

0 投票
1 回答
778 浏览

python - 在queryset django REST框架上返回NoneType

问题 :

我收到这样的错误:

追溯:

内部 41 中的文件“/usr/local/lib/python2.7/dist-packages/django/core/handlers/exception.py”。 response = get_response(request)

_get_response 187 中的文件“/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py”。response = self.process_exception_by_middleware(e, request)

_get_response 185 中的文件“/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py”。 response = Wrapped_callback(request, *callback_args, **callback_kwargs)

Wrapped_view 中的文件“/usr/local/lib/python2.7/dist-packages/django/views/decorators/csrf.py” 58. return view_func(*args, **kwargs)

视图 87 中的文件“/usr/local/lib/python2.7/dist-packages/rest_framework/viewsets.py”。 return self.dispatch(request, *args, **kwargs)

调度 474 中的文件“/usr/local/lib/python2.7/dist-packages/rest_framework/views.py”。响应 = self.handle_exception(exc)

handle_exception 434 中的文件“/usr/local/lib/python2.7/dist-packages/rest_framework/views.py”。self.raise_uncaught_exception(exc)

调度 471 中的文件“/usr/local/lib/python2.7/dist-packages/rest_framework/views.py”。 response = handler(request, *args, **kwargs)

列表 42 中的文件“/usr/local/lib/python2.7/dist-packages/rest_framework/mixins.py”。 page = self.paginate_queryset(queryset)

paginate_queryset 172 中的文件“/usr/local/lib/python2.7/dist-packages/rest_framework/generics.py”。 return self.paginator.paginate_queryset(queryset, self.request, view=self)

paginate_queryset 311 中的文件“/usr/local/lib/python2.7/dist-packages/rest_framework/pagination.py”。self.count = _get_count(queryset)

_get_count 54.return len(queryset) 中的文件“/usr/local/lib/python2.7/dist-packages/rest_framework/pagination.py”

异常类型:/api/userprofiles/ 处的 TypeError 异常值:“NoneType”类型的对象没有 len()

我正在尝试做的事情:

我只是希望人们在连接到api时获得自己的个人资料,所以UserProfile.objects.all我认为如果我使用UserProfile.objects.get(user=request.user).

但是正如您所看到的那样它不起作用,也许是因为pagination它正在尝试获取某些问题,len()但它得到的对象是NoneType虽然我在获取它之后打印了查询集以确定它是否真的是NoneType,但它不是不。

这是我的UserProfileViewSet