如何在python中的#之后从URL获取param

时间:2018-03-01 21:57:40

标签: python django

如何在#?

之后从URL获取参数

示例:

http://localhost/addAccount/#code=qwerty

我尝试使用url = request.pathurl.spit('/'),但它无法正常工作因为request.path在网址中#不读取字符串。

2 个答案:

答案 0 :(得分:1)

在网址中,#之后传输的内容称为哈希。在到达服务器(服务器端)的HTTP请求中,此数据不会传送到服务器。因此,在服务器端,无法检索它(Web浏览器不会在HTTP请求中发送此数据)。

然而,在客户端方面是可能的。在Javascript中你可以这样做:

窗口。地点。散列

答案 1 :(得分:0)

不要尝试手动解析网址 - 使用stdlib urllib.parse.urlparse
函数(python2上的urlparse.urlparse):

from urllib.parse import urlparse  # from urlparse import urlparse on py2
scheme = urlparse('http://localhost/addAccount/#code=qwerty')
print(scheme.fragment)

打印出来:

code=qwerty

不幸的是,您无法从服务器端获取网址的fragement(#之后的数据)。 AFAIK所有浏览器都不会将片段发送到服务器(片段只能用于客户端代码(例如javascript)。

引用Wikipedia

  

当代理(例如Web浏览器)从Web服务器请求Web资源时,代理会将URI发送到服务器,但不会发送该片段。相反,代理等待服务器发送资源,然后代理根据文档类型和片段值处理资源。[2]