Python Flask 从像 render_template 这样的变量渲染文本

Posted

技术标签:

【中文标题】Python Flask 从像 render_template 这样的变量渲染文本【英文标题】:Python Flask Render Text from Variable like render_template 【发布时间】:2016-01-28 21:10:39 【问题描述】:

我知道烧瓶函数render_template。我必须给出模板的文件名。但是现在我想渲染一个模板的字符串(也就是模板的内容)。这就说得通了。但我现在不想解释为什么。如何简单地渲染模板的文本?

【问题讨论】:

只需打开模板文件并以字符串形式返回即可。 但如果我这样做(我安装了flask-bootstrap扩展),它会给我这些东西:% extends "bootstrap/base.html" % 等作为纯文本而不是处理。 这不是你的问题吗? 如何简单地呈现模板的文本? 是的,但它不处理 ... 中的事情 所以我想要一个简单的解决方案而不是简单的模板 【参考方案1】:

你可以使用render_template_string:

>>> from flask import render_template_string
>>> render_template_string('hello  what ', what='world')
'hello world'

【讨论】:

这个答案给出了一个错误:AttributeError: 'NoneType' object has no attribute 'app' @SharvariGc 在这种情况下,您需要在上下文中使用它:with app.app_context(): ...。见这里:***.com/a/50927259/11750716【参考方案2】:

你可以使用from_string

template = "text  hello "
print app.jinja_env.from_string(template).render(hello='Hello')

>> text Hello

【讨论】:

由于他使用的是Flask,所以他可以使用render_template_string(从Flask导入) 我无法将两个答案都勾选正确。你的回答也不错;)【参考方案3】:

其实你可以直接调用jinja2的渲染函数:

jinja2.Template("I am  var ").render(**kargs)

当不使用烧瓶时,这很有用

【讨论】:

这似乎是不需要Flask的最简单方法【参考方案4】:

取自What's the easiest way to escape HTML in Python。

import cgi
rendered = render_template('template.html')
return cgi.escape(rendered)

【讨论】:

这个问题和HTML转义有什么关系? 这会将呈现的 HTML 文件模板作为字符串返回。其他答案只是做简单的模板字符串。 @ThiefMaster

以上是关于Python Flask 从像 render_template 这样的变量渲染文本的主要内容,如果未能解决你的问题,请参考以下文章

flask之模板

Flask-SQLAlchemy 错误 MySQL 服务器已消失

Flask 应用程序替代文件结构(app.py,模板文件夹)

Jinja条件语句(if / else)和{{py模型输出}}

如何从像 Asp.Net 这样的堆栈跟踪中获取“源错误”?

如何从像 android.jar 这样的 jar 中“隐藏”私有类/成员/方法