我目前正在使用 Django 的 redirect() 方法来构造要重定向到的 URL。我不想对 URL 进行硬编码,所以我一直这样做:
return redirect('main.views.home', home_slug=slug)
这让我想到了类似的事情:
/home/test-123/
但我为特定 URL 添加了一些客户端跟踪,因此我想在末尾使用锚点来识别诸如首次用户访问之类的内容,如下所示:
/home/test-123/#first
除了在重定向()方法中对上述 URL 进行硬编码之外,是否有更优雅的替代方法将锚点附加到我构建的 URL 的末尾?
谢谢,
G
redirect()
接受网址 https://docs.djangoproject.com/en/dev/topics/http/shortcuts/#redirect,你可以使用reverse()
得到一个 https://docs.djangoproject.com/en/dev/topics/http/urls/#django.core.urlresolvers.reverse并附加哈希部分:
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})))
另外,还有一个捷径django.shortcuts.resolve_url
其工作原理如下:
'{}#first'.format(resolve_url('main.views.home', home_slug=slug))
EDIT for 姜戈2.0, use:
from django.urls import reverse
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)