与 href="#" 链接时,# 前的斜线

Posted

技术标签:

【中文标题】与 href="#" 链接时,# 前的斜线【英文标题】:Slash before # when linking with href="#" 【发布时间】:2016-05-26 23:05:34 【问题描述】:

什么不起作用:如果我用href="#" 创建一个链接(例如在domain.tld/main 上),我得到的链接显示为domain.tld/main#,而不是我想要的@ 987654324@。我想要一致性,因为它显示在我的索引页面上,没有 url 子目录为domain.tld/#

配置:

urls.py

urlpatterns = [

url(r'^$', views.UserLogin),

url(r'^logout$', 'django.contrib.auth.views.logout', 'next_page':'/'),

url(r'^main$', views.Main),

]

views.py

def Main(request):
    if not request.user.is_authenticated():
         return HttpResponseRedirect("http://www.domain.tld")
    else:
         return render(request, "main")

【问题讨论】:

你需要什么链接来包含斜线?您要解决什么问题而需要此修复程序? @Sayse 只是为了保持一致性,因为在索引页上domain.tld 显示为domain.tld/# 【参考方案1】:

您真正能够获得预期斜线的唯一方法是始终将其包含在 url 中

url(r'^main/$', views.Main),

所以这是你必须做出的决定,是否可以接受。 #的主要目的只是滚动到页面顶部

你可以在this question阅读更多相关信息

【讨论】:

请注意,大多数 Django 网站确实总是在 url 中包含尾部斜杠。 @DanielRoseman 在 Django 中始终使用尾部斜杠(并重定向它们)是最佳做法,还是应该以“旧”方式区分目录和文件? @rwx - When should I use a trailing slash in my URL?【参考方案2】:

它现在的工作方式是默认方式。 '#'符号保留在urls中作为片段标识符的分隔符,所以它不指向站点的目录,它只是添加到当前路径。

在索引页面的情况下它可以按预期工作的原因是无法更改您的域名 - '#' 不能直接添加到 www.domain.tld,而只能通过斜杠符号。

【讨论】:

以上是关于与 href="#" 链接时,# 前的斜线的主要内容,如果未能解决你的问题,请参考以下文章

a href="#"与a href="####"的区别是什么

href="#"的误区与作用

使用 href="#" 和验证的 ASP 超链接控件

href="javascript:" 在新标签页中打开

a href="javascript:void" 是什么意思?与 a href="#" 加不加上有什么区别?

<a href=""> 在 PHP 中用于在源视图中隐藏链接