python - 如何在 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 地址的任何提示?谢谢
解决方案
请求对象有一个.host
属性,它将为您提供运行代码的 IP 和端口。
request.host
要仅获取主机名或 IP 地址,请尝试:
request.host.split(':')[0]
或者你可以直接查询WSGI环境:
request.environ['SERVER_NAME']
推荐阅读
- javascript - 如何在 NestJs 中使用全局模块
- c - 为什么 C 在 malloc 中没有内置的保守垃圾收集
- java - 使用 exec-maven-plugin 运行 Spring 应用程序
- api - 如何使用 CURL 向 Web API 发送获取请求?
- ajax - 在 tinymce 上显示 onclick 事件
- r - 关于最短子字符串实现问题,如何提高 R 代码的速度?
- javascript - ESlint 错误,类型 '() => Promise
' 缺少来自类型 'Promise 的以下属性 ':然后,抓住,[Symbol.toStringTag],最后 - javascript - *ngFor 不显示数据
- asp.net-core - 带有 B2C 登录的 ASP.NET Core 3.x - 检索 SessionId
- laravel-seeding - Laravel 8 数据库工厂