【发布时间】:2025-10-29 19:35:01
【问题描述】:
我的视图集有一个权限类。但是它有多个 if 语句,如果在 viewset 中添加了一些动作,if 语句也可以添加其他语句。
那么我怎样才能在这里优化我的代码以获得更好的性能呢?
def has_permission(self, request, view):
user = request.user
if view.action in ["update", "partial_update"]:
return user.is_manager
if view.action == "create":
return user.is_creator
if view.action in ["list", "retrieve"]:
return user.is_viewer
if view.action == "destroy":
return user.is_admin
return False
在这里,不同类型的用户将执行不同类型的视图操作。
【问题讨论】:
-
一个比较
view.action在所有有效操作中会做你想要的吗? -
@IainShelvington 不同的
view.action是由不同的用户类型根据角色执行的,所以
标签: django django-rest-framework django-rest-viewsets