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