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-SQLAlchemy 错误 MySQL 服务器已消失
Flask 应用程序替代文件结构(app.py,模板文件夹)