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)