Как разбить несколько операторов 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)
Вернуться на верх