2014-02-17 119 views
1

我試圖打印出條目列表,總條目和Flask中生成的時間。在我的Python代碼我有:燒瓶 - 如何在同一頁上打印不同的變量

def stream_template(template_name, **context): 
app.update_template_context(context) 
t = app.jinja_env.get_template(template_name) 
rv = t.stream(context) 
return rv 

@app.route('/', methods=['POST']) 
def get_data(): 
    # Dong something here to prepare for data 
    total_entry = get_total_entry() 
    generated_time = get_generated_time() 
    entry_list = get_entry() 
    def blog_entries(): 
     for entry in entry_list: 
      yield entry 
    return Response(stream_template('blog.html', data=blog_entries())) 

我有blog_entry()爲:(用於測試目的) 返回[在範圍對於i(5)]

在blog.html我有: (爲了測試目的,我們將每個條目視爲int)

{% for i in data: %} 
<br>Entry: {{ i }}</br> 
{% endfor %} 

因此,我會得到所有條目的列表。不過,我還希望在打印出條目的同一頁面之前和之後打印出total_entry和generated_time。我應該如何更改我的Python代碼和html模板?

E.g:我想有這樣的:

Total entry: 5 
Generated time: 0.001 
Entry: 1 
Entry: 2 
Entry: 3 
Entry: 4 
Entry: 5 

太謝謝你了!

回答

1

只需將變量作爲**context關鍵字參數傳遞即可。這應該工作,但我沒有測試過。

以下是stream_template的文檔。

@app.route('/', methods=['POST']) 
def get_data(): 
    # Dong something here to prepare for data 
    def blog_entries(): 
     for entry in get_entry(): 
      yield entry 
    return Response(stream_template('blog.html', 
            data=blog_entries(), 
            total_entries=get_total_entry(), 
            gen_time=get_generated_time())) 

Jinja2模板。將格式更改爲列表。您可以使用正確的名稱訪問Jinja2模板中的**context關鍵字參數。

<ul> 
    <li>Total entries: {{ total_entries }}</li> 
    <li>Generated time: {{ gen_time }}</li> 
    {% for i in data: %} 
    <li>Entry: {{ i }}</li> 
    {% endfor %} 
</ul> 
+0

嗨感謝您的回覆,我已經明白了,但是當我嘗試這樣做時,它會引起500內部服務器錯誤。問題來自「{%for i in data:%}」,因爲調試器會說「TypeError:'NoneType'對象不可迭代」。我之前沒有這個問題:( – Kiddo

+0

'get_entry'怎麼樣,請編輯它到你的問題 – msvalkon

+0

我認爲問題是由於Flask(在網站上)給出的stream_templates函數,它需要1個參數雖然我一次發送3個論據 – Kiddo