python - 使用页面上下文从字符串渲染 jinja2 模板
问题描述
基本上,我想创建编辑器,您可以在其中使用 jinja2 语法编辑页面的一部分。在编辑器中,如果您按Preview,我希望能够看到页面中包含的渲染模板,但包含页面本身具有的所有变量和自定义过滤器。我目前的代码是:
Python
from flask import render_template
from jinja2 import Template
# (... route logic here ...)
return render_template('preview.html',
title='Some title',
preview=Template("This is {{ title }}.")
神社2
{{ title }}
{{ preview.render() }}
但输出是:
Some title
This is .
是否可以从带有页面上下文的字符串呈现我的模板,输出将是这样的?
Some title
This is Some title.
解决方案
更新
如果你想渲染一个子模板并从父模板继承上下文,那么你可以使用include
,它通常与模板路径一起使用(例如,{% include 'template.html' %}
但也适用于Template
对象:
{{ title }}
{% include preview %}
原始答案
您需要将上下文传递给第一个模板中的 preview.render() 。尝试这个:
{{ title }}
{{ preview.render(title=title) }}
推荐阅读
- azure - Azure 存储队列触发 Azure 函数高可用性
- python - 允许用户指定日期范围并按日期排序 (PYTHON)
- spring-boot - POJO类中可能使用注释的条件运算符?
- c - 测试所有数组元素是否为零的快速方法
- python-3.x - 从节点 red mqtt 节点到 python3 客户端的 Traduce
- string - 删除谷歌应用程序脚本中字符串中的尾随空格
- regex - 正则表达式替换为结尾和开头没有空格的字符串
- c# - 如何从 Excel / C# 获取宏数据?
- azure-devops - Azure Devops 构建完成通知未触发
- python - 如何在熊猫数据框中附加具有默认值的额外列?