【问题标题】:Where do you store the variables in jinja?你在哪里存储 jinja 中的变量?
【发布时间】:2011-06-07 13:30:34
【问题描述】:

我有五个页面具有相同的页面布局和结构,但有些不同的颜色、文本等,所以这是一个理想的模板环境。我决定使用 Jinja2 和可能的烧瓶。我已经阅读了文档和一些在线教程,其中解释了很多关于你可以在页面上使用模板做什么,但没有太多关于如何将变量发送到页面。

  • 您将特定于页面的变量存储在哪里?
  • 代码如何知道请求了哪个页面以及要加载哪些变量?

【问题讨论】:

  • Flask 是一个不错的选择。它的教程或多或少地回答了你的问题:flask.pocoo.org/docs/quickstart/#rendering-templates。另请注意 @app.route 如何定义 URL。
  • 谢谢 - 所以我会为每个页面创建一个 python 脚本,在每个 python 脚本中声明变量,然后将它们传递给 template.render?

标签: python templates jinja2


【解决方案1】:

基本用法如下:

首先创建一个模板

>>> from jinja2 import Template
>>> template = Template('Hello {{ name }}!')

然后通过变量渲染它

>>> template.render(name='John Doe')
u'Hello John Doe!'

通常您会希望从文件而不是代码中加载模板。这更加高效和优化,并且允许模板继承:

from jinja2 import Environment, PackageLoader
env = Environment(loader=PackageLoader('yourapplication', 'templates'))

这将在yourapplication Python 包的templates 文件夹中查找模板,这些模板安装在Python 路径中。您也可以使用其他加载器从特定文件系统或其他地方加载。

然后你可以加载一个模板:

template = env.get_template('mytemplate.html')
print template.render(the='variables', go='here')

在使用 Flask 时,一切都已为您配置好了,因此您只需使用 Flask 的 render_template 函数,它就会查找您应用程序的 templates 子文件夹:

from flask import render_template

@app.route('/hello/')
def hello(name=None):
    return render_template('hello.html', name=name)

注意传递给render_template的模板变量(也称为context

Jinja 有漂亮的good documentation。请阅读。欢迎提出更多问题。

【讨论】:

    【解决方案2】:

    编辑:我在互联网上搜索了答案,我发现了一些可以帮助的文章(很确定他们帮助了我)

    http://dbanck.de/2009/01/13/using-jinja2-with-django/

    http://www.hindsightlabs.com/blog/2010/03/15/jinja2-and-django-4ever/(已死)

    http://djangosnippets.org/snippets/1061/

    【讨论】:

    • 没有任何解释的链接选择没有帮助,-1 来自我。
    • @jwbensley Awww,因为复制粘贴被禁用而没有帮助?这是一个解释:阅读......但你的反对票也是合法的,因为我很懒或很匆忙(不记得哪个)
    • 仅粘贴大量链接会导致链接失效,这很明显,因为您现在已将其中一个链接标记为已失效。
    猜你喜欢
    • 1970-01-01
    • 2010-09-18
    • 2017-03-26
    • 2010-10-02
    • 1970-01-01
    • 2018-02-01
    • 2019-05-26
    • 1970-01-01
    • 2011-04-11
    相关资源
    最近更新 更多