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

Ksh*_*tij 5 django django-rest-framework

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

@authentication_classes我知道通过在视图中使用装饰器来解决这个问题。但一遍又一遍地重复同样的事情似乎不合逻辑。官方API GUIDE也没有提及。如果你们中有人遇到过这种情况并且知道解决方案,我希望能够得到澄清。

REST_FRAMEWORK = {
    .
    .
    DEFAULT_AUTHENTICATION_CLASSES: (
        'appname.views.CustomAuthentication',
    ),
    .
    .
}
Run Code Online (Sandbox Code Playgroud)

Could not import 'appname.views.CustomAuthentication' for API setting 'DEFAULT_AUTHENTICATION_CLASSES'. ImportError: cannot import name views.

谢谢

Ksh*_*tij 0

我偶然发现了一个解决方案。但我不知道为什么它有效。所以,诀窍是创建一个authentication.py文件并将其放在CustomAuthentication那里。

REST_FRAMEWORK = {
    .
    .
    DEFAULT_AUTHENTICATION_CLASSES: (
        'appname.authentication.CustomAuthentication',
    ),
    .
    .
}
Run Code Online (Sandbox Code Playgroud)

但我仍然想知道为什么这有效?CustomAuthentication如果我想使用包含我的类的文件的其他名称怎么办?