配置Django URLs.py以在重写以/结尾的URL后保留#锚点
在我的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'),