Flask - 当我使用带有生成器的Response(stream_template)时如何使用CSS

时间:2014-03-30 08:22:12

标签: python css flask jinja2

我正在尝试学习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

非常感谢

1 个答案:

答案 0 :(得分:2)

引自the documentation

  

请注意,在流式传输数据时,请求上下文在函数执行时已经消失。 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())))