gpt4 book ai didi

django - 自定义身份验证类作为 DEFAULT_AUTHENTICATION_CLASSES?

转载 作者:行者123 更新时间:2023-12-03 23:24:36 31 4
gpt4 key购买 nike

我正在尝试将自定义身份验证类(我已在 views.py 文件本身中定义)作为 默认认证类对于我使用 django rest 框架的 django 项目。虽然我不确定这是否可能,但能够做到这一点似乎是合乎逻辑的。

我知道使用 @authentication_classes 的解决方法 View 中的装饰器。但是一遍又一遍地重复同样的事情似乎不合逻辑。 official API GUIDE也没有提及。如果你们中的任何人遇到过这种情况并知道解决方案,我希望得到澄清。

REST_FRAMEWORK = {
.
.
DEFAULT_AUTHENTICATION_CLASSES: (
'appname.views.CustomAuthentication',
),
.
.
}
Could not import 'appname.views.CustomAuthentication' for API setting 'DEFAULT_AUTHENTICATION_CLASSES'. ImportError: cannot import name views.
谢谢

最佳答案

很可能您遇到了导入循环,因此将您的身份验证类移到您的 View 文件之外并进入身份验证类的专用文件应该可以解决问题。

导入时 rest_framework.views (或任何通用 View ,包括 View 集),它将自动导入您的所有默认身份验证类。因此,如果您在 View 文件的顶部导入 View (很可能),它将尝试导入位于导入行之后的身份验证类。因为会有循环导入,Python 将引发一个关于模块无法导入的异常(在这种情况下为 views),这就是你得到异常的原因。

因此,只需将您的身份验证类移到它自己的文件中,authentication.py例如,更改您的 DEFAULT_AUTHENTICATION_CLASSES调整它。

REST_FRAMEWORK = {
.
.
DEFAULT_AUTHENTICATION_CLASSES: (
'appname.authentication.CustomAuthentication',
),
.
.
}

关于django - 自定义身份验证类作为 DEFAULT_AUTHENTICATION_CLASSES?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30567264/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com