¿Cómo puedo lograr un simple redireccionamiento (por ejemplo, cflocation
en ColdFusion, o header(location:http://)
para PHP) en Django?Python + Django página redirigir
Respuesta
Es muy sencillo:
from django.http import HttpResponseRedirect
def myview(request):
...
return HttpResponseRedirect("/path/")
Más información en la actualización de official Django docs
: Django 1.0
Aparentemente, hay una mejor manera de hacer esto en Django ahora usando generic views
.
Ejemplo -
from django.views.generic.simple import redirect_to
urlpatterns = patterns('',
(r'^one/$', redirect_to, {'url': '/another/'}),
#etc...
)
hay más en la generic views documentation. Crédito - Carles Barrobés.
Actualización # 2: Django 1.3+
En Django 1.5 redirect_to ya no existe y ha sido sustituido por RedirectView. Crédito para Yonatan
from django.views.generic import RedirectView
urlpatterns = patterns('',
(r'^one/$', RedirectView.as_view(url='/another/')),
)
De hecho, hay una manera más sencilla de tener una vista para cada redirigir - usted puede hacerlo directamente en urls.py
:
from django.http import HttpResponsePermanentRedirect
urlpatterns = patterns(
'',
# ...normal patterns here...
(r'^bad-old-link\.php',
lambda request: HttpResponsePermanentRedirect('/nice-link')),
)
A target can be a callable as well as a string, que es lo que estoy usando aquí .
Cierto, pero usar la vista genérica' redirect_to' que viene con django es aún más fácil de leer. Vea la respuesta de Carles http://stackoverflow.com/questions/523356/python-django-page-redirect/3841632#3841632 – Day
Desde Django 1.1, también se puede utilizar la más simple redirect atajo:
from django.shortcuts import redirect
def myview(request):
return redirect('/path')
También toma un argumento de palabra clave permanente = True opcional.
Dependiendo de lo que quiere (es decir, si usted no quiere hacer ningún pre-procesamiento adicional), es más sencillo de usar sólo redirect_to
vista genérica de Django:
from django.views.generic.simple import redirect_to
urlpatterns = patterns('',
(r'^one/$', redirect_to, {'url': '/another/'}),
#etc...
)
Ver documentation para ejemplos más avanzados.
Para Django 1.3+ uso:
from django.views.generic import RedirectView
urlpatterns = patterns('',
(r'^one/$', RedirectView.as_view(url='/another/')),
)
+1 para usar una vista genérica en lugar de implementar la suya (no importa cuán simple) como en el (actual) respuesta más votado. – Day
¿Alguien tiene algún ejemplo si * desea * hacer un preprocesamiento adicional? – niallsco
Luego, sugeriría que se escriba una vista personalizada que haga el procesamiento y luego se llama a la vista genérica, o se escribe un decorador, p. pre_procese y decora la vista genérica: (r '^ one/$', pre_process (redirect_to), {'url': '/ another /'}) –
Con Django versión 1.3, el enfoque basado en la clase es:
from django.conf.urls.defaults import patterns, url
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-url/$', RedirectView.as_view(url='/redirect-url/'), name='some_redirect'),
)
En este ejemplo se vive en urls.py en
Puedes hacer esto en la sección de administración. Se explica en la documentación.
https://docs.djangoproject.com/en/dev/ref/contrib/redirects/
Aunque no es del todo pertinente para mi pregunta, esta sigue siendo una información interesante. –
Cuidado. Hice esto en un servidor de desarrollo y quería cambiarlo más tarde.
tuve que borrar mis memorias caché para cambiarlo. Con el fin de evitar este rascarse la cabeza en el futuro, yo era capaz de hacer que sea temporal, así:
from django.views.generic import RedirectView
url(r'^source$', RedirectView.as_view(permanent=False,
url='/dest/')),
ok para 1.5 Django –
page_path = definir en urls.py
def deletePolls(request):
pollId = deletePool(request.GET['id'])
return HttpResponseRedirect("/page_path/")
'deletePool'? Esa respuesta parece una copia-n-paste mal colocada ... –
Si desea redirigir su conjunto subcarpeta, el argumento url
en RedirectView is actually interpolated, por lo que se puede hacer algo como esto en urls.py
:
from django.conf.urls.defaults import url
from django.views.generic import RedirectView
urlpatterns = [
url(r'^old/(?P<path>.*)$', RedirectView.as_view(url='/new_path/%(path)s')),
]
El ?P<path>
que captura se alimentará en RedirectView
. Esta variable capturada se reemplazará en el argumento url
que usted dio, dándonos /new_path/yay/mypath
si su ruta original fue /old/yay/mypath
.
También puede hacer ….as_view(url='…', query_string=True)
si también desea copiar la cadena de consulta.
Esto debería funcionar en la mayoría de versiones de Django, lo estoy usando en 1.6.5:
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
urlpatterns = patterns('',
....
url(r'^(?P<location_id>\d+)/$', lambda x, location_id: HttpResponseRedirect(reverse('dailyreport_location', args=[location_id])), name='location_stats_redirect'),
....
)
También puede usar el nombre del patrón de URL en lugar de una URL codificado con esta solución. El parámetro location_id de la url se pasa a la función lambda.
- 1. Página web redirigir a la página principal con CGI Python
- 2. ¿Redirigir/regresar a la misma página (anterior) en Django?
- 3. Enviar un formulario sin actualizar/redirigir de la página actual (Python (Django) + jQuery + Ajax)
- 4. redirigir una página automáticamente
- 5. Django Redirigir a la vista anterior
- 6. Redirigir automáticamente a una página
- 7. cómo detener la página redirigir
- 8. Redirigir una página a otra página durante 5 segundos y luego redirigir de nuevo
- 9. página aspx para redirigir a una nueva página
- 10. Wordpress add_rewrite_rule para redirigir la página incorrectamente
- 11. Cómo redirigir a otra página usando PHP
- 12. redirigir a misma página para anclar
- 13. redirigir a la página actual en ASP.Net
- 14. Wicket: ¿cómo redirigir a otra página?
- 15. cómo redirigir a la página de inicio
- 16. ASP.net redirigir a la página de llamada
- 17. ¿Cómo redirigir stderr en Python?
- 18. Redirigir desde Vista genérica DetailView en Django
- 19. django - paso de información al redirigir después de POST
- 20. Django redirigir a la raíz desde una vista
- 21. django-social-auth: ¿Cómo redirigir example.com a 127.0.0.1:8000?
- 22. Página de Visualforce incrustada en una página de detalles que debe redirigir a otra página
- 23. Python: ¿Cómo redirigir la salida con subproceso?
- 24. Redirigir usuario en Python + Google App Engine
- 25. Paginación Django y "página actual"
- 26. Django - dos vistas, una página
- 27. jQuery Mobile: redirigir a otra página antes de cargar
- 28. Redirigir tomcat a la página de mantenimiento cuando está inactivo
- 29. ¿Cómo redirigir a una página de administración diferente en Wordpress?
- 30. cómo redirigir la página a https en php?
Este ya no es el mejor método a partir de Django 1.0. Ver esta respuesta: http://stackoverflow.com/questions/523356/python-django-page-redirect/3841632#3841632 – Jake
¿Por qué no usar 'redirect' from' django.shortcuts'? –
Uso '('^ pattern/$', lambda x: redirect ('/ redirect/url /'))' – mrmagooey