当前位置: 首页 > 面试题库 >

如何在Chameleon中使用模板继承?

微生博简
2023-03-14
问题内容

我正在使用最新的Pyramid来构建Web应用程序。不知何故,我们已经开始使用Chameleon作为模板引擎。我以前使用过Mako,创建基本模板非常简单。变色龙也可能吗?

我试图浏览文档,但似乎找不到简单的解决方案。


问题答案:

如果Chameleon> = 2.7.0,则可以使用“加载” TALES表达式。例:

main.pt:

<html>
<head>
    <div metal:define-slot="head"></div>
</head>
<body>
    <ul id="menu">
        <li><a href="">Item 1</a></li>
        <li><a href="">Item 2</a></li>
        <li><a href="">Item 3</a></li>
    </ul>
    <div metal:define-slot="content"></div>
</body>
</html>

my_view.pt:

<html metal:use-macro="load: main.pt">

<div metal:fill-slot="content">
    <p>Bonjour tout le monde.</p>
</div>

</html>


 类似资料:
  • 如果一个类用同一个函数继承多个类,它如何调用每个继承类的函数而不手动指定每个类? 示例代码如下: 我可以通过手动指定接口来调用接口: 但是对于的,考虑到还会有,,我如何编写代码来调用每个继承接口的。

  • 我在Django项目中执行Javascript代码时遇到麻烦。 下面的操作很好--即不使用模板继承 HTML: test.js 由于上面的外部Javascript文件test.js已经成功执行,所以我假设静态url、静态DIR等的设置是正确的。还有,既然jquery已经起作用了,我假设先jquery再js代码的顺序也是正确的。 当我使用模板继承时,问题就来了。 基本HTML: 继承的模板: 但是,

  • 我有一个非常特殊的例子,我需要在一个模板文本中使用一个模板文本,但是我做不到。 代码如下所示: 然而,我必须将其包装在函数中,同时保持变量的值,这会导致错误发生。无论我是否逃脱了滴答声。 使用转义滴答,我收到以下错误消息: 错误:预期的某个链接但未提供 没有,我得到: 意外标记,预期“”,” 我该怎么处理这件事? 编辑:可能应该注意的是,中传递的代码将被渲染并且需要使用它。它最终将通过传递给另一个

  • Jinja 最为强大的地方在于他的模板继承功能,模板继承允许你创建一个基础的骨架模板, 这个模板包含您网站的通用元素,并且定义子模板可以重载的 blocks 。 听起来虽然复杂,但是其实非常初级。理解概念的最好方法就是通过例子。 基础模板 在这个叫做 layout.html 的模板中定义了一个简单的 HTML 文档骨架,你可以 将这个骨架用作一个简单的双栏页面。而子模板负责填充空白的 block:

  • 模板继承可以减少页面内容的重复定义,实现页面内容的重用 典型应用:网站的头部、尾部是一样的,这些内容可以定义在父模板中,子模板不需要重复定义 block标签:在父模板中预留区域,在子模板中填充 extends继承:继承,写在模板文件的第一行 定义父模板base.html { % block block_name % } 这里可以定义默认值 如果不定义默认值,则表示空字符串 { %

  • Jade 支持通过 block 和 extends 关键字来实现模板继承。 一个块就是一个Jade的"block" ,它将在子模板中实现,同时是支持递归的。 Jade 块如果没有内容,Jade会添加默认内容,下面的代码默认会输出block scripts, block content, 和 block foot. html head h1 My Site - #{title}

  • 继承 继承能够创建可复用的模板,定义页面的骨架,然后被子模板填充,子模板又可以作为父模板被继承。 继承主要通过两个标签语法实现 <t:template> 定义要继承的父模板 <b:block> 在父模板中用来定义可以被填充的区域;在子模板中用来定义将内容填充到父模板的指定区域 定义父模板 layout.vdt <div> <b:header> <div>父模板头部</div> </

  • 模板继承是 ThinkCMF推荐一种布局方式,它比上一篇讲的模板布局更灵活;模板继承就是你先定义一个基础的模板,在这个基础模板你可以设置很多个区块( block),然后在其它实际要渲染的子模板文件中用 extend标签继承这个基础模板,在子模板中定义name相同的 block,这样就可以对基础模板中定义的区块进行重载; 每个区块都是<block></block>这样的标签,如: <block na