Мне нужно создать вложенный маршрут. Что выглядит примерно так: api/<campaign-name>/content/<content-id>
. Я знаю, что есть пакеты (this и this), которые создают вложенные маршруты. Я пробовал их и довольно ограничен. Поэтому я решил жестко связать URL-адреса. В URLs и мнения приведены ниже:Django Rest Framework: permissions_classes не работает
В urls.py
# contents
## detail, update, remove
url(
r'^api/campaign/(?P<campaign>[a-z0-9-]+)/content/(?P<content>\d+)/$',
ContentAPI.as_view({'get' : 'retrieve', 'put' : 'update', 'delete' : 'destroy'}),
name = "content-detail"
),
## toggle content verification
url(
r'^api/campaign/(?P<campaign>[a-z0-9-]+)/content/(?P<content>\d+)/toggle_status/$',
ContentAPI.as_view(
{'post' : 'toggle_status'},
permission_classes = [Or(IsContentManager, IsContentModerator)]
),
name = "content-toggle-status"
),
В views.py
class ContentAPI(viewsets.ModelViewSet):
permission_classes = [Or(IsContentManager)]
... # actions and methods here
Все работает нормально, но разрешения не похоже на работу. Доступ к API возможен без входа в систему. Как обеспечить соблюдение разрешений в моем сценарии.