在 Django REST Framework 的管理面板中隐藏令牌 table

Hide the token table from the admin panel in Django REST Framework

我正在使用 Django REST FrameworkDjango-OAuth-toolkit 在我的应用程序中启用 OAuth2 身份验证。

自从使用 OAuth2 后,我不再需要 token-based 身份验证,因此没有令牌 table/model.

有时看到两个不同的处理令牌的模块让我感到困惑。

因此,我想从 Django 的管理面板 remove/hide Token table。

这是我的 settings.py 文件

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'oauth2_provider.contrib.rest_framework.OAuth2Authentication'
    ),
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated'
    ],
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 10
}

我已经删除了基于令牌的身份验证,但 Token table 仍然存在于管理面板中

您必须从 INSTALLED_APPS

中删除 rest_framework.authtoken

docs

您没有"have to"删除rest_framework.authtoken

此答案可能不适用于您,但如果您想继续使用 authtokens 并只是让它们对管理员隐藏,您可以将以下内容添加到您现有的 admin.py 文件之一:

from rest_framework.authtoken.models import Token
admin.site.unregister(Token)
from rest_framework.authtoken.models import TokenProxy
admin.site.unregister(TokenProxy)
from rest_framework.authtoken.models import Token
admin.site.unregister(Token)

如果你做上面的一个你会得到 “提高 NotRegistered('The model %s is not registered' % model.name) django.contrib.admin.sites.NotRegistered:模型Token未注册

所以请按照下面的方法进行

from rest_framework.authtoken.models import TokenProxy
admin.site.unregister(TokenProxy)

进入任何已注册应用的 admin.py 并添加以下行。

from rest_framework.authtoken.models import TokenProxy
admin.site.unregister(TokenProxy)

至少,这按照 2021 使用 Django 3.1.7

这应该正常工作

from rest_framework.authtoken.admin import (
    TokenProxy
)

admin.site.unregister(TokenProxy)