Django URL模式包含#

时间:2015-02-20 05:45:18

标签: python django url-pattern

我在使用网址格式时遇到问题。

网址格式如下:

/API#access_token=<string>&expires_in=<timestamp>

不幸的是,我无法更改#access_token =&amp; expires_in =部分,因为这超出了我的控制范围,我只需要让我的代码工作。

我尝试了许多不同的模式,其中一些模式如下所述。这是我的第一个Django项目,任何建议和指针都会非常感激。

url(r'^API#access_token=(?P<token_info>\w+)&expires_in(?P<time>\d+)$'
url(r'^API#(?P<tokens>\w+)$'
url(r'^API/#(?P<tokens>\w+)&(?P<expiration>\d+)$'

1 个答案:

答案 0 :(得分:5)

问题是,锚#(也称为片段标识符)不会被浏览器发送到服务器。正则表达式无法捕捉不存在的东西。来自wikipedia article on the fragment identifier

  

片段标识符的功能与其余部分不同   URI:即,它的处理完全是客户端,没有   来自Web服务器的参与 - 当然通常是服务器   有助于确定MIME类型,MIME类型决定了   处理碎片。当代理(例如Web浏览器)   从Web服务器请求Web资源,代理将URI发送到   服务器,但不发送片段。相反,代理等待   为服务器发送资源,然后代理处理   资源根据文档类型和片段值。

解决这个问题的唯一方法是在客户端的JavaScript中解析片段,并将其作为单独的异步请求发送。对于GET请求,您可以将片段作为查询参数发送(在剥离散列之后)或将其作为自定义值放入标题中。