配置Django URLs.py以在重写以/结尾的URL后保留#锚点

3 投票
3 回答
2792 浏览
提问于 2025-04-16 02:02

在我的Django应用中,我的URL配置文件(URLS.PY)设置了可以接受请求到/community/user/id和/community/user/id/这两个地址,具体是这样写的:

url(r'^(?P<username>[\w-]+)/(?P<cardId>\d+)/$', 'singleCard.views.singleCard', name='singleCardView'),

我这样做是因为有时候用户会在网址最后加一个斜杠“/”,我不想让他们看到404错误页面。

不过,我的JavaScript应用有时候会添加一个锚点标签,格式是:

/community/user/id#anchorIuseInJavscriptToDoSomething

我遇到的问题是,Django会立刻把网址改成:

/community/user/id/ 

加上一个结尾的斜杠,并且把我在JavaScript中用来做某些事情的#anchorIuseInJavscript去掉了。

我希望它能改成:

/community/user/id#anchorIuseInJavscriptToDoSomething/

这样我的页面中的JavaScript就能看到这个锚点并正常工作。请问我该如何调整这个正则表达式来实现呢?我对正则表达式不太熟悉,都是通过例子学来的……

3 个回答

0

浏览器应该在重定向后重新添加锚点。你的问题和Django没有关系。

0

你为什么想把它改成 /community/user/id#anchorIuseInJavscriptToDoSomething/ 呢?这个写法是不对的。正确的写法应该是 /community/user/id/#anchorIuseInJavscriptToDoSomething。井号后面的部分并不是网址的一部分,它不会被发送到服务器。

2

你可以让最后的斜杠变成可选的:

url(r'^(?P<username>[\w-]+)/(?P<cardId>\d+)/?$', 'singleCard.views.singleCard', name='singleCardView'),

撰写回答