django - 为restframework viewset action decorator添加一个新的装饰器
问题描述
我有一个 django 视图集,我在其中添加了一个带有动作装饰器的函数。我想为此功能添加一个自定义装饰器。
@action(
methods=["post"],
detail=True,
permission_classes=[],
url_path="rename-book",
url_name="rename-book",
)
def rename_book(self, request, pk=None):
book_instance = self.get_object()
book_instance.name = request.data['name']
book_instance.save()
return Response({"message":"Done"})
我想添加一个自定义装饰器来进行身份验证和检查用户匿名性。关于如何前进的任何想法?
解决方案
而不是使用装饰器,您可以permission_classes
像这样使用:
from rest_framework.permissions import IsAuthenticated
和
@action(
methods=["post"],
detail=True,
permission_classes=[IsAuthenticated,],
url_path="rename-book",
url_name="rename-book",
)
def rename_book(self, request, pk=None):
book_instance = self.get_object()
book_instance.name = request.data['name']
book_instance.save()
return Response({"message":"Done"})
推荐阅读
- php - 如何从另一个 PHP 文件更改变量
- php - 在将数据插入数据库表之前检查重复
- r - 使用字符数据的百分比堆积条形图
- wordpress - 循环显示自定义帖子类型类别(术语)
- android - 使用 Intent putExtra Serializable 传输时应用程序终止
- java - 通过身份验证将 pdf 内容在线传输到 BufferedInputStream
- c# - 如何从错误 1216-无法添加或更新子行中获得更透明的消息:MySQL 中的外键约束失败?
- php - htaccess 重定向在实时站点中不起作用
- flutter - Flutter - 如何同步两个或多个 PageController
- c++ - rs2_device_info 详细定义在哪里?