Получить текущий URL в Python - PullRequest
23 голосов
/ 04 мая 2010

Как мне получить текущий URL с Python,

Мне нужно получить текущий 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

Ответы [ 6 ]

51 голосов
/ 04 мая 2010

Попробуйте это:

self.request.url

Также, если вам просто нужна строка запроса, это будет работать:

self.request.query_string

И, наконец, если вы знаете переменную строки запроса, которую вы 'ищите, вы можете сделать это:

self.request.get("name-of-querystring-variable")
3 голосов
/ 04 мая 2010

Для тех, кто находит это через Google,

Я понял,

вы можете получить строки запроса по вашему текущему запросу, используя:

url_get = self.request.GET

, который является UnicodeMultiDict строк вашего запроса!

0 голосов
/ 16 июня 2019

Вы можете использовать ОС

    import os
    url = os.environ
    print(url)

с этим вы увидите все данные, которые предоставляет os.environ. Похоже, вам нужно "QUERY_STRING". Как и любой объект JSON, вы можете получить такие данные.

    import os
    url = os.environ['QUERY_STRING']
    print(url)
0 голосов
/ 23 января 2019

Вот как я собираю в Python 3 из CGI (A) URL, (B) GET параметров и (C) POST данных:

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

import sys, os, io

CAPTURE URL

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

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

myURLSelf = myDomainSelf + myPathSelf

CAPTURE GET DATA

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

ЗАПИСЬ ПОЧТОВЫХ ДАННЫХ

myTotalBytesStr = (os.environ.get ( 'HTTP_CONTENT_LENGTH')) * * 1 021

if (myTotalBytesStr == Нет):

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

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

Я использую эти методы для запуска Python 3 на Windows Server с CGI через MIIS.

Надеюсь, это поможет вам.

0 голосов
/ 02 апреля 2014

Я не мог заставить другие ответы работать, но вот что сработало для меня:

    url = os.environ['HTTP_HOST']
    uri = os.environ['REQUEST_URI']
    return url + uri
0 голосов
/ 04 мая 2010

Попробуйте это

import os
url = os.environ['HTTP_HOST']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...