获取Python中的当前URL

时间:2010-05-04 10:47:42

标签: python google-app-engine

如何使用Python获取当前URL

我需要获取当前的URL,以便我可以检查查询字符串,例如

requested_url = "URL_HERE"

url = urlparse(requested_url)

if url[4]:
    params = dict([part.split('=') for part in url[4].split('&')])

这也在Google App Engine中运行

7 个答案:

答案 0 :(得分:51)

试试这个:

self.request.url

此外,如果您只需要查询字符串,这将起作用:

self.request.query_string

最后,如果你知道你正在寻找的查询字符串变量,你可以这样做:

self.request.get("name-of-querystring-variable")

答案 1 :(得分:3)

对于通过谷歌找到这个的人,

我想通了,

您可以使用以下方式获取当前请求的查询字符串:

url_get = self.request.GET

这是查询字符串的UnicodeMultiDict!

答案 2 :(得分:0)

试试这个

import os
url = os.environ['HTTP_HOST']

答案 3 :(得分:0)

我无法得到其他工作的答案,但这对我有用:

    url = os.environ['HTTP_HOST']
    uri = os.environ['REQUEST_URI']
    return url + uri

答案 4 :(得分:0)

这是我在Python 3中从CGI(A)URL,(B)GET参数和(C)POST数据捕获的方式:

================================================ ========

导入sys,os,io

捕获网址

myDomainSelf = os.environ.get('SERVER_NAME')

myPathSelf = os.environ.get('PATH_INFO')

myURLSelf = myDomainSelf + myPathSelf

捕获获取数据

myQuerySelf = os.environ.get('QUERY_STRING')

捕获发布数据

myTotalBytesStr =(os.environ.get('HTTP_CONTENT_LENGTH'))

如果(myTotalBytesStr == None):

myJSONStr = '{"error": {"value": true, "message": "No (post) data received"}}'

其他:

myTotalBytes=int(os.environ.get('HTTP_CONTENT_LENGTH'))

myPostDataRaw = io.open(sys.stdin.fileno(),"rb").read(myTotalBytes)

myPostData = myPostDataRaw.decode("utf-8")

将RAW写入文件

mySpy =“ myURLSelf:[” + str(myURLSelf)+“] \ n”

mySpy = mySpy +“ myQuerySelf:[” + str(myQuerySelf)+“] \ n”

mySpy = mySpy +“ myPostData:[” + str(myPostData)+“] \ n”

您需要在此处定义自己的myPath

myFilename =“ spy.txt”

myFilePath = myPath +“ \” + myFilename

myFile = open(myFilePath,“ w”)

myFile.write(mySpy)

myFile.close()

================================================ ========

还有其他一些有用的CGI环境变量:

AUTH_TYPE

CONTENT_LENGTH

CONTENT_TYPE

GATEWAY_INTERFACE

PATH_INFO

PATH_TRANSLATED

QUERY_STRING

REMOTE_ADDR

REMOTE_HOST

REMOTE_IDENT

REMOTE_USER

REQUEST_METHOD

SCRIPT_NAME

SERVER_NAME

SERVER_PORT

SERVER_PROTOCOL

SERVER_SOFTWARE

==========================================

我正在使用这些方法通过MIIS在带有CGI的Windows Server上运行Python 3。

希望这可以为您提供帮助。

答案 5 :(得分:0)

您可以使用os

    import os
    url = os.environ
    print(url)

这样,您将看到os.environ提供的所有数据。看来您需要“ QUERY_STRING”。像任何JSON对象一样,您可以像这样获取数据。

    import os
    url = os.environ['QUERY_STRING']
    print(url)

答案 6 :(得分:0)

requests模块具有'url'属性,即已更改的url。
只需尝试:

import requests
current_url=requests.get("some url").url
print(current_url)