【问题标题】:Hide the token table from the admin panel in Django REST Framework在 Django REST Framework 的管理面板中隐藏令牌表
【发布时间】:2019-01-13 13:55:28
【问题描述】:

我正在使用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

【问题讨论】:

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


    【解决方案1】:

    这应该正常工作

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:
        from rest_framework.authtoken.models import Token
        admin.site.unregister(Token)
        

        如果你做上面的,你会得到 "raise NotRegistered('模型 %s 未注册' % model.name) django.contrib.admin.sites.NotRegistered:模型Token未注册”

        所以请遵循以下方法

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

        【讨论】:

          【解决方案4】:
          from rest_framework.authtoken.models import TokenProxy
          admin.site.unregister(TokenProxy)
          

          【讨论】:

            【解决方案5】:

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

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

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

            【讨论】:

            • 我尝试了这个解决方案,但即使django.contrib.authINSTALLED_APPS 中列在首位,它也会引发NotRegistered 错误
            • 你应该注销TokenProxy admin.site.unregister(TokenProxy)
            • 感谢@AllenShaw,取消注册 TokenProxy (admin.site.unregister(TokenProxy)) 对我有用。
            【解决方案6】:

            您必须从 INSTALLED_APPS 中删除 rest_framework.authtoken

            docs

            【讨论】:

            • 是的,您不必“必须”,但如果您愿意,这似乎是一个合理的解决方案。在我的情况下效果很好。谢谢!
            猜你喜欢
            • 2021-11-20
            • 2020-06-27
            • 2017-01-24
            • 2021-08-03
            • 2013-09-11
            • 2016-06-20
            • 1970-01-01
            • 2019-02-26
            • 1970-01-01
            相关资源
            最近更新 更多