Как правильно получить текущий URL-адрес в Python? - PullRequest
0 голосов
/ 03 июля 2019

Я запускаю свой проект на локальном хосте (http://127.0.0.1:5000/) и будет работать по-другому на моем клиентском сервере. Поэтому я пытался динамически получить URL-адрес, но безрезультатно.

Я пытался: request.host_url как показано в этой теме . Однако он вернул

RuntimeError: working outside of request context

Вот что я пытался сделать, это запустить python unittest, которому нужен полный URL как параметр post (), этопричина, по которой мне нужен динамический URL.

import json, requests

from flask import request
from .base import *

class TestProvince(BaseTest):

    # Test Data
    ID               = '41'
    DESCRIPTION      = 'Province Test'
    LOCAL_DESCRIPTION = 'Province local Description'

    def test_add_record(self):

        print "Adding a new record"

        url = "http://127.0.0.1:5000/Project/API/Province/" # <-- Here I want it to be dynamic url
        payload = {
                    "Status":"AUTH",
                    "Curr":"0",
                    "Inputter":"System",
                    "Createdon":"2019-05-03",
                    "Authorizer":"System",
                    "Authorizeon":"2019-05-03",
                    "Branch":"HO",
                    "ID":self.ID,
                    "Description":self.DESCRIPTION,
                    "LocalDescription":self.LOCAL_DESCRIPTION
                }
        headers = {
            'Content-Type': "application/json",
            'Accept': "application/json"
            }

        response = requests.request("POST", url, data=json.dumps(payload), headers=headers)


if __name__ == "__main__":
    unittest.main()

Любой совет, как правильно получить текущий URL-адрес в Python? Спасибо

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

Объект запроса имеет атрибут .host, он даст вам IP-адрес и порт, на котором работает ваш код.

request.host

Чтобы получить только имя хоста или IP-адрес, попробуйте:

request.host.split(':')[0]

Или вы можете запросить среду WSGI напрямую:

request.environ['SERVER_NAME']
0 голосов
/ 03 июля 2019

С запрос документация

request.base_url должно быть то, что вы должны использовать. Я не могу найти документацию для request.host_url.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...