这是我的第一个问题,我很乐意接受任何关于改进的建议。温柔点:)
为了提高可维护性,我尝试将CSS、JS和HTML放在同一个文件中。对于include文件或宏等,这变得很困难。最终输出template.render()应该获取所有CSS和JS,并将其放在基本HTML模板的顶部和底部。在
举例说明我的意思:
基本.html
{{ print_css() }}
{% include 'bolded_text.html' %}
{{ print_js() }}
加粗_文本.html
^{pr2}$
输出当然是:
strong {
background: #ccc;
}
{% include 'bolded_text.html' %}
alert('javascript included!')
可以预见的是,问题是print_css()什么也不输出。在
我尝试使用上下文过滤器来实现这一点,其中add_js和{}附加到上下文中的一个变量,然后print_css和{}输出该变量。这对于JavaScript来说非常简单,因为print语句遵循所有过滤器。在
但是,我想不出一种方法来使用CSS。如果我可以使print_css()调用变懒,或者以某种方式交换jinja2ast中的输出,那可能会奏效。我试图避免对字符串的非法操作(例如在底部输出CSS,然后使用regex将其移动到顶部)。在
我想也许有一种方法可以优雅地实现这一点,而我对jinja2的低级API的经验是有限的。在
非常感谢您的帮助,谢谢!在