Flask应用中的自定义路由
我一直在尝试了解如何生成动态Flask URL。我已经阅读了文档和一些示例,但无法弄清楚为什么此代码不起作用:
path = 'foo'@app.route('/<path:path>', methods=['POST'])
def index(path=None):
# do some stuff...
return flask.render_template('index.html', path=path)
我希望将index.html模板提供给/foo
,但事实并非如此。我收到一个构建错误。我想念什么?
如果我使用固定路径(如)/bar
,则一切正常。
@app.route('/bar', methods=['POST'])
回答:
你已经拥有了很多东西。你需要做的就是使用/<var>
语法(或/<converter:var>
适当的语法)修饰视图函数。
from flask import Flask, render_templateapp = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/<word>', defaults={'word': 'bird'})
def word_up(word):
return render_template('whatstheword.html', word=word)
@app.route('/files/<path:path>')
def serve_file(path):
return send_from_directory(app.config['UPLOAD_DIR'], path, as_attachment=True)
if __name__ == '__main__':
app.debug = True
app.run(port=9017)
当Flask像你尝试使用的那样从动态路由的URL中提取变量时,默认情况下它将是Python中的unicode字符串。如果你使用<int:var>
或<float:var>
转换器创建变量,它将在你的应用空间中转换为适当的类型。
该<path:blah>
转换器将包含斜杠(字符串匹配/),那么你可以通过/blah/dee/blah
在你的浏览功能路径变量将包含字符串。在不使用path转换器的情况下,flask将尝试将你的请求分派到在路线上注册的视图函数/blah/dee/blah
,因为平原由/uri中的下一个划定。
因此,查看我的小应用程序,该/files/<path:path>
路由将提供与用户在请求中发送的路径相匹配的任何文件。我从这里的文档中提取了这个示例。
另外,请挖掘你可以通过装饰器的关键字arg
为变量URL指定默认值route()。
如果需要,你甚至可以url_map
根据在应用程序空间中指定视图功能和路线的方式访问Werkzeug构建的基础。有关更多内容,请查看有关URL注册的api文档。
以上是 Flask应用中的自定义路由 的全部内容, 来源链接: utcz.com/qa/418168.html