首页 > 解决方案 > 如何在 Python 中正确获取当前 URL 地址?

问题描述

我在本地主机(http://127.0.0.1:5000/)上运行我的项目,并且在我的客户端服务器上会有所不同。所以我尝试尝试动态获取 URL 地址但无济于事。

我试过:request.host_url如this thread所示。然而,它回来了

RuntimeError: working outside of request context

在这里,我尝试做的是运行需要完整 URL 作为参数 post() 的 python unittest,这就是我需要它动态 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()

关于如何在 python 中正确获取当前 URL 地址的任何提示?谢谢

标签: pythonrequest

解决方案


请求对象有一个.host属性,它将为您提供运行代码的 IP 和端口。

request.host

要仅获取主机名或 IP 地址,请尝试:

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

或者你可以直接查询WSGI环境:

request.environ['SERVER_NAME']

推荐阅读