在Django Rest Framework中创建路由的@action和@API_view有什么区别

y4ekin9u  于 2022-12-14  发布在  Go
关注(0)|答案(1)|浏览(227)

这两个装饰器看起来都只是为你创建一个路由。但是实际上有什么区别(如果有的话)呢?在文档中,这一点并不清楚。
我甚至用同样的方法创建了两条路径,结果没有任何区别

qltillow

qltillow1#

@action用于使现有ViewSet中的方法可传递:
如果你有一些特别的方法应该是可路由的,你可以用@action装饰器来标记它们。
@API_view将基于普通函数的视图函数“转换”为DRF视图。文档对此进行了最好的解释:
REST框架还允许您使用常规的基于函数的视图,它提供了一组简单的装饰器,用于 Package 基于函数的视图,以确保它们接收到Request的示例(而不是通常的Django HttpRequest),并允许它们返回一个Response(而不是DjangoHttpResponse),并允许您配置如何处理请求。此功能的核心是API_view装饰器,它接受视图应该响应的HTTP方法的列表。

相关问题