2015-03-16 4 views
2

У меня есть REST api, созданный с использованием DRF 3.0.1. Если я использую класс разрешений rest_framework.permissions.IsAuthenticated, любой аутентифицированный пользователь может выполнять действия GET, POST и т. Д. Для любого пользователя, поскольку он имеет действительный токен.django-rest-framework: настройка на пользовательские разрешения

Я хочу установить разрешения для каждого пользователя, чтобы пользователь мог видеть и обновлять данные всех пользователей, но любой пользователь, не являющийся администратором, должен иметь возможность видеть и обновлять только свои данные.

Из примеров, которые я видел до сих пор, кажется rest_framework.permissions.DjangoObjectPermissions - это класс, который мне нужно использовать. Однако в примерах используются представления на основе классов.

В моем коде я использовал функции на основе представлений. Можно ли реализовать это, используя функции, основанные на представлениях? Выполнение queryset = <Model>.objects.non(), как предложено в DRF doc, не помогает. Он жалуется Cannot apply DjangoModelPermissions on a view that does not have .model or .queryset property.

Есть ли способ, которым я могу это сделать, не переходя от FBV к CBV?

ответ

2

Вы используете api_view декоратор DRF?

если так, вы можете найти rest_framework.decorators.permission_classes полезно.

@permission_classes([SomePermission])

+0

Отлично! Мне потребовалось некоторое время, чтобы понять разрешение, но это действительно потрясающе. Спасибо! – Dharmit

Смежные вопросы