python、flask和jinja2:将参数传递到url_

python、flask和jinja2:将参数传递到url_,python,flask,jinja2,Python,Flask,Jinja2,我有这个: {{ url_for('static', filename='css/main.min.css') }} 但我想传递的模板中也有一个时间戳,以防止缓存,如: {{ url_for('static', filename='css/main.min.css?timestamp=g.timestamp') }} 这显然不起作用。HTML最终需要阅读: href=“css/main.min.css?timestamp=144013328”您可以使用类似的方法覆盖静态文件的url\u处理程

我有这个:

{{ url_for('static', filename='css/main.min.css') }}
但我想传递的模板中也有一个时间戳,以防止缓存,如:

{{ url_for('static', filename='css/main.min.css?timestamp=g.timestamp') }}
这显然不起作用。HTML最终需要阅读:


href=“css/main.min.css?timestamp=144013328”

您可以使用类似的方法覆盖静态文件的
url\u处理程序

下面是一个工作示例:

app.py

from flask import Flask, render_template, request, url_for
import os

app = Flask(__name__)
app.debug=True

@app.context_processor
def override_url_for():
    return dict(url_for=dated_url_for)

def dated_url_for(endpoint, **values):
    if endpoint == 'static':
        filename = values.get('filename', None)
        if filename:
            file_path = os.path.join(app.root_path,
                                     endpoint, filename)
            values['q'] = int(os.stat(file_path).st_mtime)
    return url_for(endpoint, **values)

@app.route('/')
def index():
    return render_template('index.html')

if __name__ == '__main__':
    app.run(port=5000)
模板/index.html

<html>
<body>
<img src="{{ url_for('static', filename='20110307082700.jpg') }}" />
</body>
</html>

嗯,这比我希望的要混乱一点,但似乎确实有效——谢谢!
127.0.0.1 - - [21/Aug/2015 13:24:55] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [21/Aug/2015 13:24:55] "GET /static/20110307082700.jpg?q=1422512336 HTTP/1.1" 200 -