我在本地主机(http://127.0.0.1:5000/)上运行我的项目,并且在客户端服务器上会有所不同。因此,我尝试尝试动态获取URL地址,但无济于事。
我尝试过:request.host_url
,如本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地址的任何提示?谢谢
答案 0 :(得分:0)
摘自request文档
request.base_url
应该是您应该使用的。我在任何地方都找不到request.host_url
的文档。
答案 1 :(得分:0)
请求对象具有.host
属性,它将为您提供运行代码的IP和端口。
request.host
要仅获取主机名或IP地址,请尝试:
request.host.split(':')[0]
或者您可以直接查询WSGI环境:
request.environ['SERVER_NAME']
答案 2 :(得分:0)
据我所知,request.host
在 Flask 中的路由功能之外不起作用。
例如,做这样的事情
@app.route('/')
def get_something():
print(request.host)
这会起作用,因为它在路由函数中。