【问题标题】:Render part of the template in Flask在 Flask 中渲染部分模板
【发布时间】:2014-02-02 20:06:10
【问题描述】:

实现以下功能的正确方法是什么:

(Flask)Web 应用程序视图由几个 DIV 组成,这些 DIV 包含一些 html 内容(即,从数据库中提取的项目列表)。将视图下载到浏览器后,DIV 的内容将在 AJAX 请求的帮助下根据用户操作单独更新。

我知道 Jinja2 模板引擎中有宏功能,它是 Flask 微框架的一部分。也许有一种方法可以只渲染某些宏,然后我可以用它来提供部分内容。

但话又说回来,也许那不是实现此功能的正确方法,还有更多“正确”的方法。

【问题讨论】:

  • 通常情况下,您会下拉 JSON 数据,然后在浏览器中本地呈现为 HTML。

标签: python flask jinja2


【解决方案1】:

Flask documentation 实际上有一个完全符合您描述的示例:

模板:

{% macro hello(name) %}Hello {{ name }}!{% endmacro %}

查看:

hello = get_template_attribute('_cider.html', 'hello')
return hello('World')

【讨论】:

  • 谢谢,这个解决方案有效,只有一个警告:如果我的模板包含对请求对象的引用,那么检索模板属性是不可能的。即使所需的宏不包含对全局对象的任何引用,也会发生这种情况。我不知道如何规避这一点。
  • 是的,整个模板必须编译成功。您可能应该将宏移动到一个单独的模板文件中,然后您可以将其导入到您的其他模板中并通过get_template_attribute在视图中访问。
猜你喜欢
  • 1970-01-01
  • 2011-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-19
  • 2017-06-25
  • 1970-01-01
相关资源
最近更新 更多