如何获取所有Django REST框架权限类?

2024-06-25 05:19:08 发布

您现在位置:Python中文网/ 问答频道 /正文

使用./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]

如何获取所有权限类,包括自定义类?

我正在编写一个自定义管理命令,列出所有现有权限及其使用方式,因此我需要一些方法来加载整个应用程序,而不是分别导入每个文件。


Tags: djangoinfrompyimportrest应用程序权限
1条回答
网友
1楼 · 发布于 2024-06-25 05:19:08

我认为这是因为您还没有导入这些子类,所以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__()。在

相关问题 更多 >