Я написал настраиваемый класс разрешений в Django REST Framework версии 3.8.2, который ведет себя по-разному в зависимости от действия запроса. Я обнаружил, что иногда view.action
равен None
при использовании Browsable API для отладки. Ниже приведен фрагмент кода, который вызывает исключение при использовании с Browsable API.
class AdminOnlyPermission(BasePermission):
def has_permission(self, request, view):
# Just to demonstrate that view.action can be None
assert(view.action is not None)
# Only allow admin to delete
if view.action == 'delete' and not request.user.is_staff:
return False
return True
Что означает, что view.action
- это None
? Могу ли я безопасно проигнорировать его или возможно, чтобы злонамеренный пользователь сделал запрос на удаление с действием, установленным на None
?
Edit:
Класс прав доступа используется только для GenericViewSets
.