我试图弄清楚如何将 Genshi 中的 CSS 添加到一些动态生成的标记中。我试图避免内联 CSS,理想情况下,规则会出现在<head/>
父文档的标签中。
我正在使用看起来像这样的现有代码(为了简化,我从原始代码中重写了它,所以我可能有一些语法错误;但原始代码有效,所以我认为如果有语法错误,你可以忽略):
模板/小部件/file_widget.html
<html xmlns:py="http://genshi.edgewall.org/"
xmlns:xi="http://www.w3.org/2001/XInclude"
py:strip="">
<head>
<style type="text/css">
.file-widget {
background-color:#eee; display:inline-block; padding:4px;
}
</style>
</head>
<py:def function="file_widget(file_name)">
<div class=".file-widget">
...
</div>
</py:def>
</html>
小部件.py
class FileWidget:
...
def html():
markup_template = genshi.template.MarkupTemplate('''
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://genshi.edgewall.org/" xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="my_project/widgets/file_widget.html" />
${description}
${file_widget(file_name)}
</html>''')
markup = markup_template.generate(file_name = self.file_name, description = genshi.core.Markup(self.description))
return markup.render('html', doctype = 'html')
模板/main_page.html
<div py:for='widget in app.widgets'>
${ genshi.core.Markup( widget.html() ) }
</div>
不幸的是,<style/>
标签被渲染了两次:一次,正如我所希望的,在原始文档<head/>
中,然后小部件<head/>
再次被渲染。
如何更改代码以在正确的位置正确包含 CSS?由于这是协作代码,因此感谢您进行少量更改和更清晰的代码!
感谢您的阅读和您的帮助。