【发布时间】:2013-06-09 07:05:09
【问题描述】:
我希望我的 Flask 应用程序在本地主机上运行和在线托管时具有不同的行为。我如何从烧瓶应用程序中检测到它在本地主机上以及何时部署?
【问题讨论】:
-
所有网站总是在本地主机上运行。毕竟,他们在主机上。如果通过
http://localhost...访问该站点,您的意思是想要不同的行为吗? -
不应该有开发配置文件和部署配置文件吗?
我希望我的 Flask 应用程序在本地主机上运行和在线托管时具有不同的行为。我如何从烧瓶应用程序中检测到它在本地主机上以及何时部署?
【问题讨论】:
http://localhost... 访问该站点,您的意思是想要不同的行为吗?
这是一种方法。关键是将当前根 url flask.request.url_root 与您要匹配的已知 url 值进行比较。
摘自 github repo https://github.com/nueverest/vue_flask
from flask import Flask, request
def is_production():
""" Determines if app is running on the production server or not.
Get Current URI.
Extract root location.
Compare root location against developer server value 127.0.0.1:5000.
:return: (bool) True if code is running on the production server, and False otherwise.
"""
root_url = request.url_root
developer_url = 'http://127.0.0.1:5000/'
return root_url != developer_url
【讨论】:
您会想查看the configuration handling section of the docs,尤其是the part on dev / production。在这里总结一下,你要做的是:
代码示例:
from __future__ import absolute_imports
from flask import Flask
import .config # This is our default configuration
app = Flask(__name__)
# First, set the default configuration
app.config.from_object(config)
# Then, load the environment-specific information
app.config.from_envvar("MYAPP_CONFIG_PATH")
# Setup routes and then ...
if __name__ == "__main__":
app.run()
另请参阅:Flask.config 的文档
【讨论】: