2015-05-21 55 views
7

我具有長頸瓶的應用程序,當它被從瓶中http request調用沒有問題調用flask.render_template渲染Jinja2的模板而不燒瓶方面

我需要同樣的方法來瓶外工作(從蟒蛇後端程序)

resolved_template = render_template(template_relative_path, **kwargs) 

我可以使用jinja2 api,但我想同樣的方法來工作,在兩種情況下(燒瓶和命令行)

回答

7

你需要使它在一個應用程序上下文。在您的後端代碼中導入您的應用並執行以下操作。

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

只是想用這種方法添加一點警告:在Flask中運行時,此方法會導致db.session.rollbak()。所以如果你有一個正在進行的交易,你會想避免創建一個新的上下文。 –

7

如果你想完全繞過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

+1

更重要的是,只要用瓶本身的默認神社環境'app.jinja_env'。 – 0x24a537r9

0

我使用的是這樣的代碼:

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))