我正在尝试学习Flask并制作一款小应用。所以起初,我通过使用以下方法测试了没有css文件:(delay()从生成器获取结果)
return Response(stream_template('login.html', data=delay()))
它适合我,然后现在我想实现新的CSS,让我们称之为style.css,我把它放在静态文件夹中。在html文件中我有:
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}"/>
由于上下文和响应存在问题,代码可能无法正常工作,但它可以作为静态返回工作正常:
return render_template('login.html')
我的问题无论如何,我可以让静态文件夹中的CSS使用生成器(延迟()函数)吗?我只花了几个小时来解决这个问题,但还没有找到答案。
我的stream_template:
def stream_template(template_name, **context):
app.update_template_context(context)
t = app.jinja_env.get_template(template_name)
rv = t.stream(context)
# uncomment if you don't need immediate reaction
##rv.enable_buffering(5)
return rv
非常感谢
答案 0 :(得分:2)
请注意,在流式传输数据时,请求上下文在函数执行时已经消失。 Flask 0.9为您提供了一个帮助程序,可以在执行生成器期间保持请求上下文:...
在您的情况下,您的代码可能应该是:
return Response(stream_with_context(stream_template('login.html', data=delay())))
或
return Response(stream_template('login.html', data=stream_with_context(delay())))