我一直在Django的FBV上工作,现在正在尝试CBV。我创建了一个基本的crud应用程序
Views.py
class UserViews(APIView):
permission_classes = [IsViewOnly | IsManager | IsAdmin | IsStaff]
def get_objects(self, user_id):
#query
def post(self, request):
#create code
def get(self, request):
#details code
def put(self, request):
#update code
def delete(self):
#codeurls.py
urlpatterns = [
path('add-user/', views.UserViews.as_view(), name="create-user"),
path('update-user/', views.UserViews.as_view(), name="update-user"),
path('delete-user/', views.UserViews.as_view(), name="delete-user"),
path('list-users', views.UserSearchList.as_view(), name="list-user"),
path('view-user', views.UserViews.as_view(), name="view-user"),]这段代码正在工作,但是,我们如何防止这样一种情况,即管理器想要查看用户详细信息API,但是使用delete方法执行它,而用户现在被删除。
发布于 2022-11-20 10:35:10
您可以在基于函数的视图中使用@api_view装饰器,以便对APIView类中的特定方法设置特定权限。
@permission_classes([IsManager, ])
def delete(self, request):
# your code.注意事项:当您通过class属性设置新的权限类时,您告诉视图忽略settings.py文件中设置的默认列表。参考资料:Django设置权限策略
https://stackoverflow.com/questions/74507179
复制相似问题