Comment puis-je rediriger le trafic qui ne correspond à aucune de mes autres URL vers la page d'accueil?
urls.py:
urlpatterns = patterns('',
url(r'^$', 'macmonster.views.home'),
#url(r'^macmon_home$', 'macmonster.views.home'),
url(r'^macmon_output/$', 'macmonster.views.output'),
url(r'^macmon_about/$', 'macmonster.views.about'),
url(r'^.*$', 'macmonster.views.home'),
)
En l'état, la dernière entrée envoie tout "autre" trafic vers la page d'accueil mais je souhaite rediriger via HTTP 301 ou 302 .
la source
name
partieDEBUG = True
ou au moins de définir l'ADMINS
option - docs.djangoproject.com/en/dev/ref/settings/#std:setting-ADMINSDans Django 1.8, c'est comme ça que j'ai fait le mien.
Au lieu d'utiliser
url
, vous pouvez utiliser lepattern_name
, qui est un peu non-DRY, et vous assurera de changer votre URL, vous n'avez pas à changer la redirection aussi.la source
Si vous êtes bloqué sur django 1.2 comme moi et que RedirectView n'existe pas, un autre moyen centré sur l'itinéraire pour ajouter le mappage de redirection consiste à utiliser:
Vous pouvez également tout réacheminer sur un match. Ceci est utile lorsque vous modifiez le dossier d'une application mais que vous souhaitez conserver les signets:
Ceci est préférable à django.shortcuts.redirect si vous essayez seulement de modifier votre routage d'url et n'avez pas accès à .htaccess, etc. (je suis sur Appengine et app.yaml n'autorise pas la redirection d'url à ce niveau comme un .htaccess).
la source
(r'^match_folder/(?P<path>.*)/$', RedirectView.as_view(url='/new_folder/%(path)s/', permanent=True), name='view-name'),
Une autre façon de le faire consiste à utiliser HttpResponsePermanentRedirect comme ceci:
Dans view.py
Dans le url.py
la source
Les autres méthodes fonctionnent bien, mais vous pouvez également utiliser le bon vieux
django.shortcut.redirect
.Le code ci-dessous est tiré de cette réponse .
Dans Django 2.x:
la source