Перенаправления, специфичные для администраторов 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
Не самый лучший, конечно, но пока работает, и любые лучшие предложения будут высоко оценены.