Python 如何获取所有Django REST框架权限类?
使用Python 如何获取所有Django REST框架权限类?,python,django,python-3.x,django-rest-framework,Python,Django,Python 3.x,Django Rest Framework,使用/manage.py shell启动Django shell后,我在应用程序中看不到任何自定义权限子类: In [1]: from rest_framework.permissions import BasePermission In
/manage.py shell启动Django shell后,我在应用程序中看不到任何自定义权限子类:
In [1]: from rest_framework.permissions import BasePermission
In [2]: BasePermission.__subclasses__()
Out[2]:
[rest_framework.permissions.AllowAny,
rest_framework.permissions.IsAuthenticated,
rest_framework.permissions.IsAdminUser,
rest_framework.permissions.IsAuthenticatedOrReadOnly,
rest_framework.permissions.DjangoModelPermissions]
如何获取所有权限类,包括自定义权限类?
我正在编写一个自定义管理命令来列出所有现有权限及其使用方式,因此我需要某种方法来加载整个应用程序,而不是单独导入每个文件。我认为这是因为您没有导入这些子类,因此python解释器不知道有任何自定义的BasePermission
子类
最初,我自己使用包中的python manage.py shell\u plus
命令测试了这一点,该命令在启动shell时导入所有模型。然后,当我运行BasePermission.\uu子类\uuu()
时,它列出了我所有的自定义权限
然后我尝试了python manage.py shell
,运行了相同的代码,结果与您的相同
因此,如果您的所有权限都在一个文件中,或者是一个文件模式,例如/permissions.py
,那么您应该导入所有这些权限文件(从app_folder.permissions import*
),然后尝试BasePermission.\uu子类
当你说自定义命令时,你是指django管理命令吗?你的权限类是在每个应用程序的permissions.py
文件中,还是分布在不同的文件中?i、 e.是否有任何views.py
文件包含自定义权限类定义?@a.J.Parr我认为它们都在permissions.py中,但我绝对不想不安全地假设总是这样。