django - Django Rest Framework 可选地覆盖视图集列表方法?
问题描述
我正在尝试修改 ViewSet 的列表方法。
仅当条件满足时,我才需要返回数据。否则应调用默认行为。
def list(self, request):
"""Allow profile listing only for admin and super admins."""
if request.user.is_authenticated and request.user.user_type == constants.Constants.ADMIN:
#invoke default behaviour
pass
else:
return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
但是如果条件通过,此代码将不起作用。
我是 Django 和 DRF 的新手,有更好的方法吗?或者我该如何修复上面的代码?
解决方案
如果您想要默认行为,则需要调用return super().list(request, *args, **kwargs)
而不是pass
.
另外我不确定 403 是否不会比 405 状态码更好?所以它可能看起来像这样:
def list(self, request, *args, **kwargs):
"""Allow profile listing only for admin and super admins."""
if request.user.is_authenticated and request.user.user_type == constants.Constants.ADMIN:
#invoke default behaviour
return super().list(request, *args, **kwargs)
else:
return Response(status=status.HTTP_403_FORBIDDEN)
推荐阅读
- android - 无法在 Koin 2.1.6 中使用共享状态 ViewModel
- ios - 在自定义 Cordova InAppBrowser 插件中使用自己的菜单栏
- python - 使用 python-docx 检测损坏的文档文件
- git - 为什么 gitlab 存储比使用 git clone 下载的要大得多?
- python - 获取熊猫数据框两列之间的对序列的第一个和最后一个值
- postgresql - PostGIS ST_Difference 函数在结果中返回错误的几何图形
- powershell - Powershell 脚本根据其结束域在多台服务器上执行不同的操作
- javascript - 如何合并两个数组值并覆盖替换空值
- sql - 如何为连接表创建索引
- c# - 在 FullCalendar 应用程序上显示模式对话框