我目前正在使用 Django 的 redirect() 方法来构造要重定向到的 URL。我不想对 URL 进行硬编码,所以我一直在这样做:
return redirect('main.views.home', home_slug=slug)
这让我想到了这样的事情:
/home/test-123/
但是我正在为特定的 URL 添加一些客户端跟踪,所以我想在最后使用 anchor 来识别像这样的首次用户访问这样的事情:
/home/test-123/#first
如果没有在 redirect() 方法中对上述 URL 进行硬编码,是否有更优雅的替代方法将 anchor 附加到我构建的 URL 的末尾?
谢谢,
G
最佳答案
redirect()
accepts URL , 你可以使用 reverse()
to get one并附加哈希部分:
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))
编辑 对于 Django 2.0 , 采用:from django.urls import reverse
关于带有 anchor (#)参数的 Django 重定向(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11165267/