我创建了自己的身份验证' AuthOnPostOnly,但我无法正确导入它。
注意:我创建了一个名为' api'的应用。还从这个例子中的所有目录中省略了 init .py,但它们都在那里。
settings.py
INSTALLED_APPS = [
'pipeline.apps.PipelineConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# for testing
'django_nose',
# thirdparty app
'bootstrap3',
'crispy_forms',
'bootstrap_pagination',
'mobilereports',
'rest_framework',
'api'
]
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'api.permissions.AuthOnPostOnly',
)
}
目录结构
/proj
/api
urls.py
views.py
serializers.py
/permissions
permissions.py
/proj
/settings.py
/urls.py
错误:
Could not import 'api.permissions.AuthOnPostOnly' for API setting 'DEFAULT_PERMISSION_CLASSES'. AttributeError: module 'api.permissions' has no attribute 'AuthOnPostOnly'
答案 0 :(得分:1)
除非您从权限的 init .py中导入它,否则您可能需要将AuthOnPostOnly类更深一层地嵌套:
...
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'api.permissions.permissions.AuthOnPostOnly',
)
}
如果这没有帮助,请注意发布与powers.py位于同一级别的 init .py的内容,以及permissions.py本身的内容吗?
答案 1 :(得分:0)
您有多种选择:
将导入更改为:
'api.permissions.permissions.AuthOnPostOnly'
删除permissions
文件夹,并将permissions.py
文件放在api
文件夹中。
如果您想保留permissions
文件夹和api.permissions.AuthOnPostOnly
,请permissions/__init__.py
执行:
from api.permissions.permissions import AuthOnPostOnly