【问题标题】:render jinja2 template without a Flask context在没有 Flask 上下文的情况下渲染 jinja2 模板
【发布时间】:2015-05-21 19:00:38
【问题描述】:

我有一个 Flask 应用程序,它在从 Flask http request 调用时调用 flask.render_template 没有问题。

我需要相同的方法在烧瓶之外工作(来自 python 后端程序)

resolved_template =  render_template(template_relative_path, **kwargs)

我可以使用jinja2 api,但我希望在两种情况下(烧瓶和命令行)都可以使用相同的方法

【问题讨论】:

    标签: python flask jinja2


    【解决方案1】:

    如果您想完全绕过flask 并纯粹使用Jinja 来渲染您的模板,您可以这样做

    import jinja2
    
    def render_jinja_html(template_loc,file_name,**context):
    
        return jinja2.Environment(
            loader=jinja2.FileSystemLoader(template_loc+'/')
        ).get_template(file_name).render(context)
    

    然后你可以调用这个函数来渲染你的html

    【讨论】:

    • 更好的是,只需使用 Flask 自己的默认 jinja 环境和 app.jinja_env。
    【解决方案2】:

    您需要在应用程序上下文中呈现它。在后端代码中导入您的应用并执行以下操作。

    with app.app_context():
        data = render_template(path, **context)
    

    【讨论】:

      【解决方案3】:

      我使用的是这段代码:

      import jinja2
      template_values = {
        'value_name_in_html': value_name_in_python,   
      }
      
      template = JINJA_ENVIRONMENT.get_template("file_patch")
      self.response.write(template.render(template_values))
      

      【讨论】:

      • 抱怨 JINJA_ENVIRONMENT 未设置。我应该如何设置它?
      • 嗨@blissweb,很抱歉我已经有 4 年没有使用 Jinja 了,所以这个信息目前不在我的头上。如果我今天晚些时候有机会,我会看看它并回复你。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多