Перенаправления, специфичные для администраторов django

У меня есть сайт на Django, где все ссылки указывают на админку следующим образом :

urls.py (Root)

from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('', admin.site.urls),
]

Я хотел бы знать, как сделать определенные перенаправления с одного url на другой, так как у меня только одна модель для управления и одно приложение:

localhost/ => localhost/app/computer

localhost/app/ => localhost/app/computer

Я пробовал добавить это в urls.py, но это не работает :

from django.http import HttpResponseRedirect

path('/', lambda request: HttpResponseRedirect('/app/computer/'))

Я также думал добавить urls.py в app, но думаю, что может возникнуть конфликт, поскольку path('') будет находиться на обоих urls.py, корне и app

Я смог реализовать это с помощью пользовательского RedirectMiddleware

settings.py

...
MIDDLEWARE = [
    ...
    'app.middleware.RedirectMiddleware',
]
...
ROUTES = [
    {'source': '/', 'destination': '/app/computer/'},
    {'source': '/app/', 'destination': '/app/computer/'}
]

middleware.py

from django.conf import settings
from django.shortcuts import redirect

def RedirectMiddleware(get_response):

    def middleware(request):
        response = get_response(request)
        path = request.path
        for route in settings.ROUTES:
            source = route['source']
            destination = route['destination']
            if path == source:
                return redirect(destination)
        return response

    return middleware

Не самый лучший, конечно, но пока работает, и любые лучшие предложения будут высоко оценены.

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