Mein Django Projekt "Tiere" hat eine App namens "Vögel". Bei Tieren/urls.py die „Vögel“ URIs Vögel/urls.py wie folgt geführt werden:Alias für App URI in Django Projekt urls.py
urlpatterns=[
url(r'^birds/', include('birds.urls')),
url(r'^b/', include('birds.urls')), # alias
]
Die „Vögel /“ ist die offizielle, dauerhafte Basis-URI; "b /" wird als Verknüpfung/Alias akzeptiert.
Wie kann ich die "b /" URIs (permanent) zu "birds /" umleiten, so dass, obwohl Benutzer "b/pinguin" eingeben können, die Adressleiste des Browsers (letztendlich) "vögel" anzeigt /Pinguin"? Ich bevorzuge es, keinen Code in der "vögel" -App zu berühren, weil er nicht wissen sollte, wie das Projekt URIs der App zuordnet.
habe ich versucht,
RedirectView.as_view(pattern_name='birds'))
aber dies führt zu einer 410 Vorbei Antwort zu verwenden. Und
RedirectView.as_view(url='/birds/'))
leitet/b/penguin zu/vögel/um und tötet meinen Vogel.
Das funktioniert für mich (Django Version 1.9.5). Mein Browser protokolliert, dass die anfängliche '/ b/penguin' Anfrage eine' 302 gefunden' Statusantwort von Django erhält, begleitet von einem '/ vögel/Pinguin' Location Header. Der Browser macht dann eine zweite '/ vögel/Pinguin' Anfrage, die' 200 OK' ist. Ich habe das Attribut 'permanent = True' hinzugefügt, damit Django '301 Moved Permanently' anstelle von' 302 Found' zurückgibt. – Roger