Python 无需请求即可获取Flask应用程序的url

Python 无需请求即可获取Flask应用程序的url,python,flask,Python,Flask,我有一个烧瓶应用程序,如下所示: @app.before_first_request def set_base_url(): global base_url base_url = ?? # something like myflaskapp.com or http://192.168.0.5 # Initialize some some stuff here... if __name__ == "__main__": app = Flask(__name__) ap

我有一个烧瓶应用程序,如下所示:

@app.before_first_request
def set_base_url():
  global base_url
  base_url = ?? # something like myflaskapp.com or http://192.168.0.5
  # Initialize some some stuff here...

if __name__ == "__main__":
    app = Flask(__name__)
    app.run(host='0.0.0.0', port=8000)
在收到任何请求之前,我需要获取我的应用程序的完整url,以便对一些配置选项进行一次初始化。执行此操作的最佳方法是什么?

只需使用即可从您的配置中获取:

if __name__ == "__main__":
    app = Flask(__name__)
    domain = app.config.get('SERVER_NAME', 'some.sensible.default.domain')
    # Do things with `domain` here

我正在使用pysaml2库向我的应用程序添加单点登录功能。库需要配置,该配置需要基本url,如下所示:“endpoints”键下。您为什么不使用?我之所以这样问,是因为我非常担心在Flask中以这种方式添加全局状态。Flask-SSO使用Shibboleth作为身份提供者。我必须用不同的东西。以上只是一个例子来说明我的需要。我不会添加这样的全局变量。我有一个具有“base\u url”属性的对象,但我没有显示该属性的代码,而是认为上面的示例更简单,满足了同样的需求。如果在
If\uu name\uuu=='\uu main\uu'
块之前不定义
app
,您将得到一个
名称错误
。只有使用服务器名称配置实例时,该错误才有效。如果您使用任何其他方法,例如服务器主机和服务器端口或werkzeug run\u simple,那么这将不起作用。