Django Rest Framework: backend не найден

Я пытаюсь создать и аутентифицировать учетную запись github в DRF. Почему я получаю ошибку 404 и не могу попасть на страницу аутентификации github? Я предоставил выдержки из кода. Если требуется какая-либо информация или у вас есть вопросы, пожалуйста, дайте мне знать.

Вот views.py

class BookViewSet(ModelViewSet):
    queryset = Book.objects.all()
    serializer_class = BooksSerializer
    filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
    permission_classes = [IsAuthenticated]
    filterset_fields = ['price']
    search_fields = ['name', 'author_name']
    ordering_fields = ['price', 'author_name']

def auth(request):
    return render(request, 'oauth.html')

А вот settings.py



# Application definition

INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    
    'social_django',

    'store',
]

MIDDLEWARE = [
    "django.middleware.security.SecurityMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    "django.middleware.common.CommonMiddleware",
    "django.middleware.csrf.CsrfViewMiddleware",
    "django.contrib.auth.middleware.AuthenticationMiddleware",
    "django.contrib.messages.middleware.MessageMiddleware",
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
]

ROOT_URLCONF = "books.urls"

TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": ['templates'],
        "APP_DIRS": True,
        "OPTIONS": {
            "context_processors": [
                "django.template.context_processors.debug",
                "django.template.context_processors.request",
                "django.contrib.auth.context_processors.auth",
                "django.contrib.messages.context_processors.messages",
            ],
        },
    },
]

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'books_db',
        'USER': 'books_user',
        'PASSWORD': '',
        'HOST': 'localhost',
        'PORT': '',
        'TEST': {
            'NAME': 'test_finance',
        },
    }
}


AUTHENTICATION_BACKENDS = (
    'social_core.backends.github.GithubOAuth2',
    'django.contrib.auth.backends.ModelBackend',
)


REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': (
        'rest_framework.renderers.JSONRenderer',
    ),
    'DEFAULT_PARSER_CLASSES': (
        'rest_framework.parsers.JSONParser',
    ),
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated', )
}

SOCIAL_AUTH_POSTGRES_JSONFIELD = True

SOCIAL_AUTH_GITHUB_KEY = '-some github key'
SOCIAL_AUTH_GITHUB_SECRET = 'git secret'

Мой urls.py


router = SimpleRouter()

router.register(r'book', BookViewSet)

urlpatterns = [
    path("admin/", admin.site.urls),
    re_path('', include('social_django.urls', namespace='social')),
    path('auth/',auth)
]

urlpatterns += router.urls

И очень простой шаблон oauth.html

<a href="{% url "social:begin" "github-oauth2" %}">Github</a>

Страница не найдена (404) Бэкэнд не найден Метод запроса: GET URL запроса: http://127.0.0.1:8000/login/github-oauth2/. Вызвано: social_django.views.auth Используя URLconf, определенный в books.urls, Django попробовал эти шаблоны URL, в таком порядке:

admin/ login/str:backend/ [name='begin']. Текущий путь, login/github-oauth2/, совпал с последним.

Вы видите эту ошибку, потому что в вашем файле настроек Django установлено DEBUG = True. Измените это значение на False, и Django отобразит стандартную страницу 404.

У меня была такая же проблема с авторизацией через github. Авторизация сработала только в первый раз, а затем всегда показывала страницу не найдена (404). У меня это произошло потому, что я уже был залогинен и oauth просто перенаправлял меня на главную страницу. Чтобы исправить это, я зашел на сайт :

https://github.com/settings/developers

Открыл свое приложение и "отозвал токены всех пользователей".

Вернуться на верх