首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Genshi (TurboGears 2)中添加小部件(动态) CSS

在Genshi (TurboGears 2)中添加小部件(动态) CSS
EN

Stack Overflow用户
提问于 2014-09-10 12:31:08
回答 1查看 167关注 0票数 0

我试图弄清楚如何在Genshi中添加CSS到一些动态生成的标记中。我试图避免内联CSS,理想情况下,规则会出现在父文档的<head/>标记中。

我正在处理类似于以下内容的现有代码(为了简化,我从原始代码中重写了这个代码,因此可能会出现一些语法错误;但是,我认为原始代码可以忽略语法错误(如果有的话)):

templates/widgets/file_widget.html

代码语言:javascript
复制
<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

代码语言:javascript
复制
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')

templates/main_page.html

代码语言:javascript
复制
<div py:for='widget in app.widgets'>
    ${ genshi.core.Markup( widget.html() ) }
</div>

不幸的是,<style/>标记被呈现了两次:一次,正如我希望的那样,在原始文档<head/>中,然后小部件<head/>再次呈现。

如何将代码适当地包含在正确的位置上?由于这是协作代码,小改动和更清晰的代码是值得赞赏的!

谢谢你的阅读和帮助。

EN

回答 1

Stack Overflow用户

发布于 2014-09-13 13:04:29

您可能需要使用像ToscaWidget2这样的小部件库,它实际上是用资源来管理小部件。

否则,您可能需要使用像fanstatic这样的静态文件框架,它支持资源包含:http://www.fanstatic.org/en/1.0a5/quickstart.html#including-resources-with-fanstatic

如果您想要提交您自己的自定义解决方案,您应该在小部件呈现的任何地方注册资源(如在请求中),然后在呈现模板时将它们添加到head标记中。这实际上就是tw2.core.resources所做的:https://github.com/toscawidgets/tw2.core/blob/develop/tw2/core/resources.py

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25765549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档