我想弄清楚如何在Genshi中添加CSS到一些动态生成的标记。我试图避免内联CSS,理想的规则将出现在母文档的<head/>
标签中。我正在使用现有的代码,看起来像这样(为了简化,我重写了这个代码,所以我可能会有一些语法错误;但是原创的作品,所以我认为你可以忽略语法错误) :在Genshi(TurboGears 2)中添加小部件(动态)CSS
模板/小工具/ 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>
widgets.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在正确的位置?由于这是协作代码,因此我们不会感激您的更改和更清晰的代码!
感谢您的阅读和帮助。
感谢您的回答。 'tw2.core.CSSLink'和'tw2.core.JSSource'看起来不错,但我不确定如何将它们合并到我的代码中。正如我所解释的,我正在编辑一个合作项目中的现有代码。更改或添加库更加困难。 – Yuval 2014-09-15 11:59:03