使用./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_plus
命令对其进行了测试,它在启动shell时导入所有模型。然后当我运行BasePermission.__subclasses__()
时,它列出了我所有的自定义权限。在然后我尝试了
python manage.py shell
,运行相同的代码,结果和你的一样。在因此,如果您的所有权限都在一个文件中,或者像
<app_folder>/permissions.py
这样的文件模式,您应该导入所有这些权限文件(效果是from app_folder.permissions import *
),然后尝试BasePermission.__subclasses__()
。在相关问题 更多 >
编程相关推荐