我自己写的动态路线是这样的:
@app.route('/')
@app.route('/<controller>')
@app.route('/<controller>/<action>')
@app.route('/<controller>/<action>/<id>') # <--- this route overrides
def main(controller = None, action = None, id = None):
我标记#
的地方,该路由会覆盖/static/css/filename.css
的默认行为,因为这是一个有效的路由。如何通过动态路由提供这些文件?
最佳答案
嗯,你的 root 是非常笼统的,基本上它会抓取所有内容(不是所有内容,但你知道它匹配所有字符串和 URL 的结构)并与至少一个规则匹配。因此,如果您想保留提供静态文件的规则,只需使用类似 @app.route('/static/css/')
的内容,并且该规则应该为将提供静态文件的 View 提供服务。
但总的来说,我认为这不是一个好方法。我想说看看 blueprints并在这些的帮助下进行模块化应用。然后您可以定义每个蓝图开头的 URL,这样您就可以分离模块和路由。这种通用方法将来可能会导致越来越多的问题。但这是你的选择;)
关于python - 如果覆盖默认值,如何为 Flask 提供静态服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13599295/