在Django REST Framework中从管理面板隐藏令牌表

时间:2018-08-06 14:55:38

标签: django django-rest-framework django-oauth

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

自从使用了 OAuth2 之后,我不再需要基于令牌的身份验证,因此也就不需要令牌表/模型。

有时候,在看到两个用于处理令牌的模块之后,我感到困惑。

因此,我想从Django的管理面板中删除/隐藏Token表。

这是我的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

enter image description here

5 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

您必须从rest_framework.authtoken中删除INSTALLED_APPS

请参见docs

答案 2 :(得分:1)

您不必“不必”删除rest_framework.authtoken

此答案可能不适用于您,但是如果您想继续使用身份验证令牌并将其隐藏在Admin中,则可以将以下内容添加到现有的admin.py文件之一:

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

答案 3 :(得分:1)

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

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

至少,这按照 2021 使用 Django 3.1.7 工作。

答案 4 :(得分:0)

import { DomSanitizer, SafeResourceUrl, } from '@angular/platform-browser';

mapURL: SafeResourceUrl

constructor( public sanitizer: DomSanitizer) { }

var url = "https://maps.google.com/maps?q="
      + this.tenant.latitude
      + ","
      + this.tenant.longitude
      + "&hl=es;z=14&output=embed";
this.mapURL = this.sanitizer.bypassSecurityTrustResourceUrl(url);

如果你做了上面的一个,你会得到 "raise NotRegistered('模型 %s 未注册' % 模型。名称) django.contrib.admin.sites.NotRegistered: 模型令牌未注册"

所以请按照下面的方法

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