2017-04-11 80 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。