你已经知道了它的长短。您需要做的就是使用/<var>
语法(或/<converter:var>
适当的语法)装饰您的视图函数。
from flask import Flask, render_template
app = 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>
or<float:var>
转换器创建变量,它将在应用程序空间中为您转换为适当的类型。
<path:blah>
转换器将匹配包含斜杠 ( ) 的字符串,/
因此您可以传递/blah/dee/blah
并且视图函数中的路径变量将包含该字符串。在不使用path
转换器的情况下,flask 会尝试将您的请求发送到在 route 上注册的视图函数/blah/dee/blah
,因为平原由uri 中<var>
的下一个描述。/
所以看看我的小应用程序,该/files/<path:path>
路由将提供它可以找到与用户在请求中发送的路径匹配的任何文件。我从这里的文档中提取了这个例子。
此外,您可以通过装饰器 的关键字arg
为变量 URL 指定默认值。route()
如果您愿意,您甚至可以url_map
根据您在应用程序空间中指定视图函数和路由的方式访问 Werkzeug 构建的底层。要了解更多内容,请查看有关 URL 注册 的api 文档。