从 Django HttpResponseRedirect 或重定向中删除锚名称
Posted
技术标签:
【中文标题】从 Django HttpResponseRedirect 或重定向中删除锚名称【英文标题】:Remove anchor name from Django HttpResponseRedirect or redirect 【发布时间】:2021-01-28 09:15:21 【问题描述】:我不知道这是错误还是功能,但是当我使用联系表单锚点在主页上时
(url = http://localhost:8000/#contact
)
提交表单后,所有这些都会重定向,包括 #contact
锚名称,我无法摆脱它:
from django.http import HttpResponseRedirect
from django.urls import reverse
from django.shortcuts import redirect
# Following 3 lines all send back to http://localhost:8000/#contact
return HttpResponseRedirect(reverse('homepage'))
return redirect(reverse('homepage'))
return redirect('/')
# As a test, the following line redirects to http://localhost:8000/account/email/#contact
return HttpResponseRedirect(reverse('account:email'))
我发现一些人有相反的问题,尝试add the anchor name,但找不到与我的问题相关的问题
【问题讨论】:
使用你要重定向到的路径名,并在重定向函数中使用 【参考方案1】:浏览器在重定向期间会保留一个片段,您可以查看这些 SO 问题/答案:
-
URL hash is persisting between redirects
URL Fragment and 302 redirects
所以,我相信您可以尝试在重定向 URL 中设置一个空片段来覆盖页面的 URL 片段。如果没有帮助,则在成功响应时从 JS 重定向。
【讨论】:
谢谢,成功了!我猜应该寻找更广泛的解决方案以上是关于从 Django HttpResponseRedirect 或重定向中删除锚名称的主要内容,如果未能解决你的问题,请参考以下文章