Python 配置Django URLS.py,以便在用结束符重写后在URL中保留#锚/

Python 配置Django URLS.py,以便在用结束符重写后在URL中保留#锚/,python,regex,django,django-urls,Python,Regex,Django,Django Urls,在我的django应用程序中,我将url.PY配置为接受对/community/user/id和/community/user/id/的请求,其中包括: url(r'^(?p[\w-]+)/(?p\d+/$),'singleCard.views.singleCard',name='singlecardwiew'), 我这样做是因为有些时候人们会加上一个结尾“/”,我不想加404 但是,我的javascript应用程序的某些部分有时会以以下形式添加锚定标记: /community/user/id#

在我的django应用程序中,我将url.PY配置为接受对/community/user/id和/community/user/id/的请求,其中包括:

url(r'^(?p[\w-]+)/(?p\d+/$),'singleCard.views.singleCard',name='singlecardwiew'),

我这样做是因为有些时候人们会加上一个结尾“/”,我不想加404

但是,我的javascript应用程序的某些部分有时会以以下形式添加锚定标记:

/community/user/id#anchorIuseInJavscriptToDoSomething
我遇到的问题是Django会立即将URL重写为:

/community/user/id/ 
带有结尾/并移除#anchorIuseInJavscriptToDoSomething

我想把它改写成:

/community/user/id#anchorIuseInJavscriptToDoSomething/

这样,页面中的javascript仍然可以看到锚并工作。如何调整这个正则表达式来实现这一点?我不太擅长正则表达式,并通过示例学习了这一点…

浏览器应该在重定向后处理重新追加锚定。您的问题与Django无关。

为什么要将其更改为
/community/user/id#anchorIuseInJavscriptToDoSomething/
?这是无效的。它应该是
/community/user/id/#anchorIuseInJavscriptToDoSomething
。散列后的元素不是URL的一部分,也不会发送到服务器。

您可以将尾部斜杠设置为可选:

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

知道为什么Safari中没有,还有其他解决方案吗?例如,配置Django以接受两个URL,但不重新写入它们?@Tristan:这是safari的一个已知问题。已经有针对它的bug提交了,但是如果你也提交了一个也不会有什么坏处。顺便说一句,尝试在重定向中包含锚点只会将问题转移到ie8,IIR有时用户会手动键入/community/user/id/并以斜杠结尾。我不想在他们还的时候还404。我也需要能够有一个散列在那里,所以理想情况下我不想重写URL,但有两个工作这是Safari的问题,而不是Django。可能的重复