2017-04-11 86 views
0

有沒有人試過這段代碼flask config based static folder code cnippet從Flask中的配置更改靜態文件夾

代碼:

import flask 
class MyFlask(flask.Flask): 
    @property 
    def static_folder(self): 
     if self.config.get('STATIC_FOLDER') is not None: 
      return os.path.join(self.root_path, 
       self.config.get('STATIC_FOLDER')) 
    @static_folder.setter 
    def static_folder(self, value): 
     self.config.get('STATIC_FOLDER') = value 

# Now these are equivalent: 
app = Flask(__name__, static_folder='foo') 

app = MyFlask(__name__) 
app.config['STATIC_FOLDER'] = 'foo' 

在我的情況下,抱怨這行:

self.config.get('STATIC_FOLDER') = value 

錯誤消息:Can't assign to function call

有誰如何設置從配置的static_folder。在Flask中的py文件?

回答

1

我不知道這些片斷什麼,但

some_function(...) = some_value 

是永遠有效的Python(Python並不l-values)。它看起來像config有一個類似字典的接口,所以出錯的行應可能只是

self.config['STATIC_FOLDER'] = value 

大概從模子上面的吸氣器定義一個複製和粘貼錯誤。

0

是的,在我的一個項目中,我正在使用/爲STATIC_FOLDER設置一個自定義路徑。您可以設置路徑STATIC_FOLDERconfig.py象下面這樣:

STATIC_PATH = '<project-name>/<path-to-static-folder>/' 

例如:

STATIC_PATH = 'myApp/static/' 

如果你能寫你的項目結構,那麼我可以回答它按您的要求。

1

好吧,我假設你想使用自定義路徑到任何原因的靜態文件夾。爲了更好的應用程序模塊化,我也想做同樣的事情。

這裏是我的應用程序文件夾結構:

instance/ 
core/ 
    |_templates/ 
    |_static/ 
    |_views.py 
run.py 
config.py 

正如你看到的,我static文件夾是core文件夾內。

run.py,你可以做到以下幾點:

app = Flask(__name__, static_url_path=None) 

if __name__ == '__main__': 
    app.config.from_object('config') 

    # config file has STATIC_FOLDER='/core/static' 
    app.static_url_path=app.config.get('STATIC_FOLDER') 

    # set the absolute path to the static folder 
    app.static_folder=app.root_path + app.static_url_path 

    print(app.static_url_path) 
    print(app.static_folder) 

    app.run(
     host=app.config.get('HOST'), 
     port=app.config.get('PORT'), 
     threaded=True 
     ) 

這就是我所做的,和它的作品完美的罰款。我正在使用燒瓶0.12。