我有一個 Django 網站,其中所有 url 都指向管理員,如下所示:
urls.py(根)
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('', admin.site.urls),
]
我想知道如何將特定的重定向從一個 url 重定向到另一個,因為我只有一個模型要管理和一個應用程式:
本地主機/ => 本地主機/應用程式/計算機
本地主機/應用程式/ => 本地主機/應用程式/計算機
我嘗試將其添加到 urls.py 但它不起作用:
from django.http import HttpResponseRedirect
path('/', lambda request: HttpResponseRedirect('/app/computer/'))
我也想過添加urls.py到應用程式,但我認為可能存在沖突,根目錄和應用程式path('')都會發生沖突urls.py
uj5u.com熱心網友回復:
我能夠通過使用自定義來實作這一點 RedirectMiddleware
設定.py
...
MIDDLEWARE = [
...
'app.middleware.RedirectMiddleware',
]
...
ROUTES = [
{'source': '/', 'destination': '/app/computer/'},
{'source': '/app/', 'destination': '/app/computer/'}
]
中間件.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
肯定不是最好的,但它現在有效,任何更好的建議將不勝感激。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/408079.html
標籤:
