Saltar al contenido

Django redirect () con parámetros de anclaje (#)

Solución:

redirect() acepta URL, puedes usar reverse() para obtener uno y agregar una parte hash:

from django.core.urlresolvers import reverse

return redirect(reverse('main.views.home', kwargs={'home_slug':slug}) + '#first')
# or string formatting
return redirect('{}#first'.format(reverse('main.views.home', kwargs={'home_slug':slug})))

Además, hay un atajo django.shortcuts.resolve_url que funciona como:

'{}#first'.format(resolve_url('main.views.home', home_slug=slug))

EDITAR por Django 2.0, usar:
from django.urls import reverse

[Only working up until Django 1.8, not functional in Django 1.9+, see comments!]

Puede agregar un ancla a la expresión regular en urls.py. Aquí hay un ejemplo de una aplicación de foro de muestra que saltará a la publicación deseada en un hilo.

views.py

return redirect(post_list, 
    slug=post.thread.slug, 
    page=1, 
    anchor="post_{0}".format(post.id)
)

urls.py

url(r'^thread/(?P<slug>[-w]+)/(?P<page>[0-9]+)/#(?P<anchor>[-_w]+)$', post_list, name="forum_view_thread"),
url(r'^thread/(?P<slug>[-w]+)/(?P<page>[0-9]+)/$', post_list, name="forum_view_thread"),
url(r'^thread/(?P<slug>[-w]+)/$', post_list, name="forum_view_thread"),
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

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