2013-06-13 76 views
1

我希望我的Flask應用程序在本地主機上運行時以及聯機託管時有不同的行爲。如何從flask應用程序中檢測它在本地主機上以及何時部署?如何查看Flask應用程序是否在本地主機上運行?

+0

你是什麼意思採取

摘錄?你會不會有不同的網址? – karthikr

+0

這兩條路徑不一樣嗎? –

+2

所有網站始終在本地主機上運行。畢竟,他們在主持人身上。你的意思是你想要不同的行爲,如果該網站通過'http:// localhost ...'訪問? – joshuahealy

回答

1

你會想看看the configuration handling section of the docs,最具體的,the part on dev/production。總結一下,你想要做的是:

  • 加載一個基本的配置,你保持在源代碼控制中,對於需要有一定價值的東西,合理的默認值。 需要的任何值值應該設置爲對於生產有意義的值不適用於開發
  • 從通過提供環境特定設置(例如數據庫URL)的環境變量發現的路徑加載額外的配置。

一個例子代碼:

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

0

的文檔下面是這樣做的一種方式。關鍵是將當前的根網址flask.request.url_root與您想要匹配的已知網址值進行比較。從GitHub回購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 
相關問題