我希望根据当前用户权限个性化api_root列表,以便并非所有级别用户都可以看到所有端点。
例:
router.register(r'users',views.UserViewSet, base_name='users')
router.register(r'groups', views.GroupViewSet, base_name='groups')
router.register(r'schedules', views.CallSchedulesViewSet, base_name='schedules')
urlpatterns = [
url(r'^', include(router.urls)),
...
]
对于" 超级用户"列表应该是:
但对于" normaluser "列表应该只是:
答案 0 :(得分:1)
我使用以下方法解决了这个问题,可能不是最优雅的方法,但它可以作为一个例子。
<强> urls.py 强>
ceylon import-jar
<强> views.py 强>
router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet, base_name='users')
router.register(r'groups', views.GroupViewSet, base_name='groups')
router.register(r'schedules', views.SchedulesViewSet, base_name='schedules')
urlpatterns = [
url(r'^$', views.APIRoot.as_view()),
url(r'', include(router.urls)),
...
]
答案 1 :(得分:0)
路线在申请开始时注册。每次通话都不会发生这种情况。所以你想要的可能是不可能的。
您可以做的一件事是返回404 error not found
而不是403 unauthorized error/access dened
,以便用户无权访问。从用户的角度来看,路由不存在。