我正在使用Flask应用程序并遇到一些路由问题。
以下功能正常工作(如在预期中呈现模板一样):
@app.route('/page1', methods = ['POST'])
def page1():
...
return render_template('page1.html')
然而,几乎相同的功能
@app.route('/page1/', methods = ['POST'])
def page1():
...
return render_template('page1.html')
无法再加载与page1.html
相关联的任何css资源。 html加载顺利,只是其他资源无法找到。
如果有人能够深入了解为什么额外的斜杠会让这种情况发生,那就太棒了!
答案 0 :(得分:1)
这是默认的烧瓶行为see werkzeug docs。要更改它,请使用:
@app.route('/page1', strict_slashes=False)
或普遍改变它,更改应用行为:
app = Flask(__name__)
app.url_map.strict_slashes = False
另一种方法是用@app.route
包裹:
def route(*a, **kw):
kw['strict_slashes'] = kw.get('strict_slashes', False)
return app.route(*a, **kw)
并使用@route
作为路径装饰器,使用或不使用斜杠(而不是@app.route
)进行路由。
最后一种方式是首选,因为它仅适用于您想要此行为的路线,而不是单一路线或所有路线。