Как разбить несколько операторов if?
У меня есть класс разрешения для моего набора представлений. Но он имеет несколько операторов if, и операторы if могут быть добавлены и другие, если какое-то действие добавлено внутри набора представлений.
Итак, как я могу оптимизировать свой код для лучшей производительности?
def has_permission(self, request, view):
if view.action in ["update", "partial_update"]:
#return some_user
return user.is_manager
if view.action == "create":
return some_user
if view.action in ["list", "retrieve"]:
return some_user
if view.action == "destroy":
return some_user
return False
Если ваш код работает хорошо, и вы просто хотите оптимизировать код, возможно, это может вам помочь:
def has_permission(self, request, view):
if view.action in ["update", "partial_update","list", "retrieve","destroy","create"]:
return some_user
return False
Ваш метод на самом деле хорош, но если вы ищете немного более лаконичный способ, попробуйте следующее:
def has_permission(self, request, view):
user = request.user
actions = {"update": user.is_manager,
"partial_update": user.is_manager,
"create": user.is_creator,
"list": user.is_viewer,
"retrieve": user.is_viewer,
"destroy": user.is_admin}
return actions.get(view.action, False)