问题标签 [template-inheritance]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
443 浏览

c++ - 组合策略类 - 模板模板参数和可变参数模板

我想知道是否可以使用可变模板模板参数组合策略类,以便每个策略都可能有自己的模板包。似乎您只能在所有策略中共享一个模板包,但我希望情况并非如此。

以下似乎是可能的:

我希望每个政策都可以有自己的包,所以我可以做这样的事情(?):

每个策略都使用相同的对象类型,但第三个有一些进一步的模板。我知道上面的代码不正确 - 只是想说明我想要做什么。

谢谢

0 投票
1 回答
3468 浏览

c++ - 访问从模板类派生的类中的基成员函数

我正在开发一个库,我设计了一个复杂的继承,其中包括模板类并从它们派生。我的问题是一个基模板类具有虚拟重载运算符,它接受 2 个参数并返回一些值。在基类中实现了这个操作符,大多数派生类没有重新实现这个操作符。

其他一些类将派生类用于某些工作并利用它们的操作员成员函数。只要派生类没有其他重载运算符,即使参数数量不同,一切都可以正常工作。如果这样做,则无法使用它访问基类运算符,object()因为编译器找不到正确的成员函数(抱怨参数计数不匹配)。

是否指定了基类的默认模板参数并不重要。派生类的定义顺序也不会改变导致问题的运算符(它始终是SpecificDerived类)。

下面我提出简化的问题。

[编辑] 示例已简化

基类定义:

派生类定义的用户:

派生类:

主功能:

编译器退出并声明存在no matching function for call to 'SpecificDerived2::memberFunc(float)'来自gobble函数的错误。仅当派生类或基类具有两个同名但参数不同的重载函数时,才会出现问题。

我正在使用支持 c++11 的 MinGW32 4.8.1。

0 投票
1 回答
121 浏览

django - Django模板继承:重复视图

我有一个名为 ListAEQ 的视图:

我想通过不同的模板多次使用此视图中的查询集。例如,我有一个扩展 aeq_list.html 的模板,它用不同的内容替换了父模板中的一个块。如何使用相同的视图但不同的模板呈现此内容,而不必创建具有相同查询集和不同 tempate_name 的多个视图。我相信有一种方法可以根据“DRY”原则做到这一点

例如,我将创建一个新视图

0 投票
1 回答
263 浏览

xml - XSL:每次调用特定模板时,首先调用更通用的模板

我有一个现有的 xslt 文件,我之前使用多个模板创建了该文件。

现在,需求发生了变化,现在在处理这些特定模板之一之前,我必须检查当前评估节点是否具有特定属性。

如果是,则必须先调用另一个模板,然后再调用特定模板。

所以基本上我的输入 XML 看起来像这样:

现在,解析 XML 文件,结果应该是这样的(实际上结果包含 FO 标记,因为我想通过 Apache FOP 创建 PDF,这只是为了简化我想做的事情):

好吧... XML 中有几个元素可以具有此属性“ specAttr”,我不想更改每个现有的<xsl:template>以检查此属性...

我尝试添加一个<xsl:template match="*">完成该工作的对象,并希望在处理该元素的特定模板之前它会与每个元素匹配。但似乎这只适用于没有特定xsl:template定义的节点。

我也已经在这里读到,可以创建与属性匹配的模板<xsl:template match="@specAttr">,但只有在我添加<xsl:apply-templates select="@*"/>. 所以我还必须更改每个已经存在的模板并添加这一行。

是否可以创建模板层次结构或模板之间的继承?总是在当前节点的实际模板之前处理父模板?

编辑:查看reference元素,您可以看到我有时还必须知道我必须在哪个位置处理新模板...如果 areference具有此属性,我必须创建一个列跨度为 2 的完整新行(但有时在另一个表中也可能是 4),因为仅添加text节点是不够的...

考虑到这一点,我认为没有办法找到通用的方法来做到这一点......

还是有人有另一个聪明的主意?

如果您需要更多信息或有任何疑问,请随时提问。

提前致谢。

BRgrds,延斯

0 投票
3 回答
2086 浏览

php - 如何在 twig 基本模板中设置基于会话的变量?

我想将 twig 插入需要在基础中包含一些基于会话的数据的应用程序中。例如,客户端的当前时区显示在页脚中。单个控制器知道这一点是没有意义的,因为这与他们无关;但另一方面,他们选择并填充视图:

在选择视图之前,是否有一些格式良好的方法可以将数据对象传递给 twig,并使其可用于基本模板?在启动 Twig_Environment 并将其传入时你会做什么?

0 投票
1 回答
2114 浏览

django - django 模板继承-views.py 用于多个子模板

我正在尝试创建 base.html 并在基础上加载几个名为“nav.html”、“contents.html”和“footer.html”的子模板。我想让所有三个子模板都加载到 base.html 页面上,每当我访问 /base.html 时。

base.html:

导航.html:

内容.html:

页脚.html:

现在,我的 views.py 看起来像:

哪个不加载三个子模板中的任何一个,如果我加载其中一个子模板,例如

我无法加载其他两个子模板。我应该如何设置 views.py 文件,以便我可以通过仅加载 /base.html 来加载 base.html 上的所有三个子模板?(我认为没有位置问题。我认为我卡住的地方是如何正确设置“views.py”以获得预期的结果。)

0 投票
1 回答
1214 浏览

django - 允许多个应用程序在 Django 中使用 {% extend base.html %} 而不会发生冲突?

我最近才开始使用 Django,并假设这个问题必须有一个好的解决方案!

通过 pip 安装 django-allauth 后,它尝试base.html从我的project/templates文件夹而不是它自己的子目录扩展。该用户遇到了同样的问题,并被告知重命名其中一个base.html文件,然后在相关应用模板中更新对其的所有引用。对于复杂的应用程序(已经很糟糕),这很容易出错;如果多个第三方应用程序各自定义自己的应用程序base.html并将其简称为{% extends 'base.html' %}. 此外,我认为这仅适用于第三方应用程序,因为我可以轻松地将 base.html 命名为我自己的每个应用程序的不同名称,但我不想弄乱有效的第三方应用程序。

我的问题是:是否有一种安全/简单的方法可以让多个第三方应用程序使用{% extends 'base.html' %}而不会发生冲突

我已阅读 Django 中模板继承的文档并了解:

  • 默认情况下,模板首先从文件系统加载,然后从应用子目录加载。因此projects/templates,在我的设置中定义的目录TEMPLATE_DIRS将首先被调用;因此 django-allauth 问题。
  • 我可以通过更改TEMPLATE_LOADERS. 但是,这只是意味着我的网站现在将扩展错误的base.html.

尽管我可以通过重命名 allauth 的base.htmlasallauthbase.html并将子模板引用更改为 来修复当前的冲突{% extends 'allauthbase.html' %},但这似乎很笨重。

最奇怪的是,这个人抱怨每个应用程序默认扩展了自己的 base.html,但这似乎是不可能的......

0 投票
1 回答
781 浏览

php - 在 Phalcon Volt 中继承动态模板

我需要加载一个页面,该页面将被“插入”到模板中——当我阅读它时,Volt 的模板继承应该可以解决问题,它确实......有点。如示例中所示,硬编码值可以正常工作 - 以下示例有效:

以及继承模板的页面:

但是,同一页面可能需要继承不同的模板,并且必须在运行时决定,因此模板的名称必须动态生成。我想到了两个选择:

  • 将模板名称设置为变量并在扩展时使用它 - 这里的问题是我没有看到之后使用它的方法。那家伙似乎也遇到了同样的问题,但既没有关于如何做的答案,也没有确认根本不可能。
  • 注册另一个函数以生成完整的字符串(例如 {% extends "../../templates/de/index.volt" %})然后编译它,例如

    $compiler->addFunction('get_template', function ($resolvedArgs, $exprArgs) use ($volt) { return $volt->getCompiler() ->compileString('{% extends "../../templates/de /index.volt" %}'); });

然后在页面中使用该功能,例如

但是,使用该方法不会解析页面内容(例如,未显示注册的 content() 函数返回的内容)。我也对其他解决方案持开放态度(对于性能问题,使用 Twig 而不是 Volt 只是最后的手段),关于我做错了什么的建议或关于该主题的有用文章的指针。提前致谢!

0 投票
1 回答
229 浏览

django - 在 Django 中继承模板

我能够渲染它home.html 并打印出来Mary had a little lambsitetitle

这是代码home.html

但它不会在 中渲染funtitle.html,尽管它位于同一目录中。

这是代码title.html

这是views.py from django.shortcuts import render from models import siteprop from django.template import loader的代码

这是代码urls.py

0 投票
2 回答
90 浏览

javascript - Javascript 模块不可用模板不是从基本 Django 模板继承的

我有这个问题希望你知道如何解决它。在不是基本模板的“子”模板的 Django 模板中,我想使用基本模板中的 javascript 模块,即 Jquery。有没有办法在不再次加载我需要的所有 javascript 库的情况下实现这一点?

让我们说 base.html

some_component_base_template.html

用户可以通过插槽机制将这个 html 块插入模板中的任何位置,这就是为什么它不从 base.html 继承的原因,如果我创建另一个标题,每次加载这个 html 块时,javascripts 都会也被加载。