2014-07-15 176 views
0

我想有一個稍微不同的導航欄取決於用戶是否已登錄。另外,下拉菜單的內容將取決於所登錄的用戶。瓶將數據傳遞給子模板

views.py文件:

@app.route('/table') 
def my_table: 
    return render_template("table.html", 
          user = user, 
          my_names = my_names) 

應用程序中的頁面(/table):

{% extends "navbar.html" %} 
{% block content %} 
<html> A bunch of stuff </html> 

簡化的導航欄模板:

{% extends "bootstrap/base.html" %} 
{% import "bootstrap/wtf.html" as wtf %} 
{% block navbar %} 
    <html> 
    <nav class="navbar navbar-default" role="navigation"> 
     <ul class="dropdown-menu" role="menu"> 
      <li><a href="#"> Signed in as: {{ user }} </a></li> 
      <li class="divider"></li> 
      {% for name in my_names %} 
       <li><a href="#"> {{ name }} </a></li> 
      {% endfor %} 
    </html> 
{% endblock %} 

我想通過usermy_names到導航欄模板。這兩個數據根據誰登錄而變化。

我在想這個嗎?我的結構好嗎?我應該用什麼來簡化這個(如Blueprints)?

(我知道我可以通過g.user因爲其全球跨模板獲取用戶部分)

+0

你試過嗎?你遇到什麼問題? – dirn

+0

@dirn不知道你在問什麼。我想知道如何將數據傳遞給子模板。我遇到的問題是不知道如何去做 –

+0

我在問你是否已經嘗試過任何東西,如果是的話,你遇到了什麼問題。 – dirn

回答

0

既然你已經設置用戶對g你有你最需要什麼了。唯一剩下的就是正確設置菜單。

做最簡單的事情是使用context processor

@app.context_processor 
def provide_menu(): 
    menu = derive_menu_from_global_user() 
    return {'menu': menu} 

然後每個模板將有機會獲得包含您可以遍歷名稱列表的menu變量。