问题标签 [jinja2]

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 回答
28942 浏览

merge - 如何修改/合并 Jinja2 字典?

我有一个 Jinja2 字典,我想要一个修改它的表达式 - 通过更改其内容或与另一个字典合并。

修改字典:失败。

两阶段更新:打印多余的“无”。

使用dict(x,**y):失败。

那么如何x通过更改属性或与另一个字典合并来修改 Jinja2 中的字典呢?

这个问题类似于:如何将两个 Python 字典合并为一个表达式?-- 只要 Jinja2 和 Python 是类似的。

0 投票
1 回答
1784 浏览

design-patterns - 创建将内容放在不同位置的 Jinja2 宏

我想在 Jinja2 模板中创建目录和尾注。怎样才能完成这些任务?

例如,我想要一个模板如下:

其中some other file with content.jnj有这样的内容:

我说“可能相当长/相当长”的意思是说它不能合理地放在引号中作为宏或全局函数的参数。

我想知道在 Jinja2 的框架内是否有一种可以适应这种情况的模式。

我最初的想法是创建一个扩展,以便可以为部分和尾注设置一个块,如下所示:

然后有全局函数(在 Jinja2 环境中传递):

但是,虽然这适用于尾注,但我认为它需要对目录进行第二次传递。

感谢您的阅读。我非常感谢您的想法和意见。

布赖恩

0 投票
2 回答
2444 浏览

python - CSS文件路径问题

在我最喜欢的编辑器(目前是 TextPad)中设计 HTML 模板时,我可以通过按 F11 或相应的工具栏按钮在浏览器中查看我的代码。我在一个单独的文件中有我的通用 css 规则,因此我的 HTML 包含以下代码:

这适用于 .css 文件与 .html 文件位于同一文件夹中,或者如果我在 href 属性中完全路径 .css 文件,例如。///c:/mycssfolder/commoncss.css

但是,在“实时”情况下,我希望 .css 文件驻留在一个公共文件夹中,该文件夹可从多个 .html 文件访问(例如 href='css/commoncss.css',其中 css 文件夹配置为网络服务器级别)。

如何在不将 css 文件复制到所有 .html 文件夹(以及随之而来的所有维护难题)的情况下实现这种设计与实时困境?

我正在使用带有 Jinja2 的 Python 3.1,但我想这个问题适用于任何语言和模板引擎。

任何帮助,将不胜感激。

艾伦

0 投票
1 回答
575 浏览

django - 在 Pylons 和 Django 应用程序之间共享 Jinja2 模板

我正在编写几个 Jinja2 模板,它们基本上实现了一些常见的网格布局。我希望能够在 Pylons 应用程序和 Django 应用程序之间共享这个模板“库”。

我遇到了一个小障碍,即可以从模板的“顶级”访问 Django 的模板上下文,而 Pylons 将您的上下文包装在线程本地c(或tmpl_context)变量中。

这里有一些类似的例子可以证明这一点。

姜戈

你好.html:

塔架

你好.html:

我想要做的是让它hello.html在两个框架中都是一样的。

我看到的一种方法是包装 Djangorender_to_response并执行以下操作:

但这只是感觉不对。有人看到这个的其他选择吗?

谢谢

0 投票
1 回答
14345 浏览

import - 在 Jinja2 中导入/包含分配的变量

在 Jinja2 中,如何访问与 ?{% set X=Y %}合并的文件中分配的变量(即 )include

给定两个 Jinja2 文件,我希望以下内容可以工作:

A.jinja

B.jinja

我希望A.jinja在使用 Jinja2 编译时,会产生以下输出:

但是,它会产生:

N在包含设置的文件的文件中,我非常愿意提供有关如何访问 Jinja2 变量的任何输入,例如上面的N

感谢您的阅读。

布赖恩

0 投票
1 回答
3118 浏览

python - Jinja2 的多部分模板问题

创建模板时,我通常有 3 个单独的部分(页眉、正文、页脚),我将它们组合起来以将单个字符串传递给 Web 服务器(在本例中为 CherryPy)。

我的第一种方法如下...

但这包含重复的代码,所以我的下一个方法是......

然而,这意味着每个部分都是在自己的环境中创建的——这会是个问题吗?这种方法还有其他缺点吗?

我选择了 3 部分方法而不是子模板方法,因为我认为它可能更灵活(并且更容易遵循),但我可能错了。有人愿意说服我使用页眉、正文和页脚块可能会更好吗?

任何意见,将不胜感激。艾伦

0 投票
6 回答
3610 浏览

python - 在 Google App Engine 中调试 Jinja2

当我在 Google App Engine 中运行 Jinja2 时,我得到了无用的调试信息。我认为这是因为常见问题解答中的这个项目:

我的追溯看起来很奇怪。发生了什么?

如果加速模块未编译并且您使用的是没有 ctypes 的 Python 安装(没有 ctypes、Jython 或 Google 的 AppEngine 的 Python 2.4)Jinja2 无法提供正确的调试信息,并且回溯可能不完整。目前对于 Jython 或 AppEngine 没有好的解决方法,因为 ctypes 在那里不可用,并且无法使用加速扩展。

虽然目前没有“好的”解决方法,但是否有任何解决方法可以使出现异常时打印的信息更有帮助?

感谢您的阅读。

布赖恩

0 投票
1 回答
3637 浏览

python - 在jinja2中连接多个块?

我在 python 中使用 jinja2 作为我的模板引擎。

我想加入多个块的内容,并想在模板的末尾呈现它,就在标签之前。{ 它们是多个模板中代码中的各种 JavaScript 片段,我想将其移至文件末尾,我该怎么做?}

编辑 :

我想移动在子 jinja 模板中创建的所有内联 javascript。我想将它们移到页面底部。所以我在页面末尾的父模板中创建了一个块,并在子模板中使用它来编写 javascript。但是,可能有多个孩子,所以有多个 javascript 块,并且由于 jinja2 不支持多个块,我还有什么其他解决方案?-------- 我认为另一种选择是以不需要内联的方式创建 javascript 本身。

0 投票
3 回答
951 浏览

python - 在没有 root 访问权限的服务器上安装 Jinja2

我正在尝试在 Web 服务器上安装 Jinja2。我尝试按照他们的建议运行命令“easy_install Jinja2”,但出现错误:

[Errno 13] 权限被拒绝:'/usr/lib/python2.5/site-packages/test-easy-install-15897.write-test'

我认为由于这是一个权限问题,我用“sudo”尝试了同样的事情。我被要求输入密码并告诉我没有权限。

我尝试使用“python setup.py”安装 Jinja2 并遇到了类似的问题。

我联系了我的网络托管公司(DreamHost,以防万一),他们说我必须为他们的 VPS 服务付费才能获得 root 访问权限。我宁愿在不支付额外费用的情况下安装它。他们说我可能有一些运气将它安装到我的主目录,但他们不会保证任何事情。这里有人知道怎么做吗?直到现在我还没有使用过 Jinja2、easy_install 或 setuptools,所以我对这些东西都不太了解。

0 投票
4 回答
2831 浏览

python - 如何确保 Jinja 自定义标签只输出一次?

我在 Jinja2 中有一个自定义标签,我只想在第一次调用它时输出一些东西。所以说我有以下模板:

我希望输出为:

我猜最好的方法是在模板的上下文中设置一个标志来跟踪我是否已经打印了一些东西。这是一个代码示例,但这对吗?

那是对的吗?我读了一些关于上下文是不可变的东西,所以这不起作用吗?(参见http://jinja.pocoo.org/2/documentation/api并搜索 immutable)