¿Cómo puedo redirigir el tráfico que no coincide con ninguna de mis otras URL a la página de inicio?
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'),
)
Tal como está, la última entrada envía todo el "resto" del tráfico a la página de inicio, pero quiero redirigir a través de HTTP 301 o 302 .
fuente
name
embargoDEBUG = True
o al menos configurar laADMINS
opción: docs.djangoproject.com/en/dev/ref/settings/#std:setting-ADMINSEn Django 1.8, así es como hice el mío.
En lugar de usar
url
, puede usar elpattern_name
, que no está SECO, y se asegurará de cambiar su URL, no tiene que cambiar también la redirección.fuente
Si está atascado en django 1.2 como yo y RedirectView no existe, otra forma centrada en la ruta de agregar el mapeo de redireccionamiento es usando:
También puede redirigir todo en un partido. Esto es útil cuando se cambia la carpeta de una aplicación pero se desea conservar los marcadores:
Esto es preferible a django.shortcuts.redirect si solo está intentando modificar el enrutamiento de su URL y no tiene acceso a .htaccess, etc. (estoy en Appengine y app.yaml no permite la redirección de URL en ese nivel como un .htaccess).
fuente
(r'^match_folder/(?P<path>.*)/$', RedirectView.as_view(url='/new_folder/%(path)s/', permanent=True), name='view-name'),
Otra forma de hacerlo es usando HttpResponsePermanentRedirect así:
En view.py
En la url.py
fuente
Los otros métodos funcionan bien, pero también puedes usar los buenos
django.shortcut.redirect
.El código a continuación se tomó de esta respuesta .
En Django 2.x:
fuente