Скрыть таблицу токенов из админ-панели в Django REST Framework

Я использую Django REST Framework а также Django-OAuth-toolkit включить аутентификацию OAuth2 в моем приложении.

Поскольку после использования OAuth2 мне больше не нужна аутентификация на основе токенов и, следовательно, нет таблицы / модели токенов.

Иногда это сбивает с толку, когда я вижу два разных модуля для обработки токена.

Поэтому я хочу удалить / скрыть Token стол из админ-панели Django.

Вот мой 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 таблица есть в админке

6 ответов

Решение

Вы должны удалить rest_framework.authtoken от INSTALLED_APPS

Посмотреть документы

Вам не "нужно" удалять rest_framework.authtoken.

Этот ответ, вероятно, не относится к вам, но если вы хотите продолжать использовать токены аутентификации и просто скрыть их от администратора, вы можете добавить следующее в один из ваших существующих файлов admin.py:

from rest_framework.authtoken.models import Token
admin.site.unregister(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.models import Token
admin.site.unregister(Token)

если вы сделаете вышеуказанное, вы получите «поднять NotRegistered ('Модель% s не зарегистрирована'% model. name )django.contrib.admin.sites.NotRegistered: Model Token не зарегистрирован»

Поэтому, пожалуйста, следуйте приведенному ниже подходу

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

Это должно нормально работать

      from rest_framework.authtoken.admin import (
    TokenProxy
)

admin.site.unregister(TokenProxy)
Другие вопросы по тегам