【问题标题】:Slash before # when linking with href="#"与 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/#

标签: regex django django-views


【解决方案1】:

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

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

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

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

【讨论】:

  • 请注意,大多数 Django 网站确实总是在 url 中包含尾部斜杠。
  • @DanielRoseman 在 Django 中始终使用尾部斜杠(并重定向它们)是最佳做法,还是应该以“旧”方式区分目录和文件?
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2016-03-17
    • 2014-04-12
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 2014-12-20
    • 2014-04-10
    相关资源
    最近更新 更多