with python django

python - with - Redireccionamiento de URL de Django



django redirect url (4)

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 la url , puedes usar el pattern_name , que es un poco pattern_name , y te asegurará que cambies tu url, no tienes que cambiar la redirección también.

¿Cómo puedo redireccionar el tráfico que no coincide con ninguna de mis otras URL a la página de inicio? Mi urls.py parece,

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 "otro" tráfico a la página de inicio, pero quiero redireccionar a través de un HTTP 301 o 302.

Gracias,


Otra forma de hacerlo es usar HttpResponsePermanentRedirect de la siguiente manera:

En view.py

def url_redirect(request): return HttpResponsePermanentRedirect("/new_url/")

En url.py

url(r''^old_url/$'', "website.views.url_redirect", name="url-redirect"),


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

Observe cómo, como url en <url_to_home_view> necesita especificar realmente la url.

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

Alternativamente, puede usar django.shortcuts.redirect


Si estás atascado en django 1.2 como yo y RedirectView no existe, otra forma centrada en la ruta para agregar la asignación de redirección es usar:

(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 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 su enrutamiento url y no tiene acceso a .htaccess, etc. (Estoy en Appengine y app.yaml no permite la redirección de URL a ese nivel como un .htaccess).