Saltar al contenido

Redireccionamiento de URL de Django

Solución:

Puede probar la vista basada en clases llamada RedirectView

from django.views.generic.base import RedirectView

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'^.*$', RedirectView.as_view(url="<url_to_home_view>", permanent=False), name="index")
)

Note como como url en el <url_to_home_view> realmente necesita especificar la URL.

permanent=False devolverá HTTP 302, mientras que permanent=True devolverá HTTP 301.

Alternativamente, puede usar django.shortcuts.redirect

Actualización para las versiones de Django 2+

Con Django 2+, url() está en desuso y reemplazado por re_path(). El uso es exactamente el mismo que url() con expresiones regulares. Para reemplazos sin la necesidad de una expresión regular, use path().

from django.urls import re_path

re_path(r'^.*$', RedirectView.as_view(url="<url_to_home_view>", permanent=False), name="index")

En Django 1.8, así es como hice el mío.

from django.views.generic.base import RedirectView

url(r'^$', views.comingSoon, name="homepage"),
# whatever urls you might have in here
# make sure the 'catch-all' url is placed last
url(r'^.*$', RedirectView.as_view(pattern_name="homepage", permanent=False))

En lugar de usar url, puedes usar el pattern_name, que no es SECO y te asegurará que cambies tu URL, no tienes que cambiar también la redirección.

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:

(r'^match_rules/$', 'django.views.generic.simple.redirect_to', {'url': '/new_url'}),  

También puedes redirigir todo en un partido. Esto es útil cuando se cambia la carpeta de una aplicación pero se desea conservar los marcadores:

(r'^match_folder/(?P<path>.*)', 'django.views.generic.simple.redirect_to', {'url': '/new_folder/%(path)s'}),  

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).

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *