我曾经通过django URL传递数据,而传递#character无法通过urls.py
,我使用的模式为
url(r'^pass/(?P<sentence>[\w|\W]*)/$',pass)
我也试过这些模式
url(r'^pass/(?P<sentence>[a-zA-Z0-9-/:-?@#{-~!^_\'\[\]*]*)/$',pass)
提前致谢。
答案 0 :(得分:3)
“#”字符标记URL中的内联锚点(同一页面内的链接),因此浏览器永远不会将其发送到Django。
例如,如果网址为/something/pass/#test/something-else/
,则浏览器仅向服务器发送/something/pass/
。您可以尝试/something/pass/%23test/something-else/
,23是#
的十六进制ascii代码 - 不漂亮(丑陋丑陋只是将其作为get变量传递)。
在Django方面你无能为力 - 在设计你的路线时你最好避免URL路径中具有特殊含义的字符 - 当然这是一个品味问题,但我真的认为字符串在URL路径中传递应该是“slugfied”才能删除任何有趣的角色。
答案 1 :(得分:0)
浏览器不会将url片段部分(以“#”结尾)发送到服务器。为什么不首先将数据转换为base64,然后通过url传递数据。
RFC 1808 (Relative Uniform Resource Locators):注意片段标识符(以及它之前的“#”)是 不被视为URL的一部分。但是,因为它是常用的 在与URL相同的字符串上下文中,解析器必须能够 在片段存在时识别片段并将片段放在一边作为片段的一部分 解析过程。