部落格裡面有三個地方用到了標籤雲:主頁面,分類頁面,部落格詳情頁面,於是有了下面一段**
# 主頁面
@main.route("/")
def index():
tags = tag.query.all()
# ...省略部分**
return render_html("index.html", tags=tags,)
# 分類頁面
@main.route("tag/")
def tags(id):
tags = tag.query.all()
# ...省略部分**
return render_html("tags.html", tags=tags,)
# 部落格詳情頁面
@main.route("post/")
def post(id):
tags = tag.query.all()
# ...省略部分**
return render_html("post.html", tags=tags,post=post)
好像問題解決了?所有頁面都能顯示出來標籤雲了? 但是這三個頁面都回傳 tags 會不會太難看了一些,完全不優雅了嘛,有沒有好的辦法呢? 答案自然是有的,接下來就到我們的重點了。
registers a template context processor function.翻譯過來很簡單: 註冊模板上下文處理器功能。 這個真能解決我們的問題嗎?別著急讓我們試一下,把之前的**改造一下。
def peach_blog_menu():
tags = tag.query.all()
return dict(tags=tags)
@main.route("/")
def index():
# ...省略部分**
return render_html("index.html")
# 分類頁面
@main.route("tag/")
def tags(id):
# ...省略部分**
return render_html("tags.html")
# 部落格詳情頁面
@main.route("post/")
def post(id):
tags = tag.query.all()
# ...省略部分**
return render_html("post.html")
是不是發現什麼消失了? tags 好像從之前的幾個函式中消失了,沒有回傳到前台,能訪問到嗎?自然是可以的。原因自然是 context_processor 了,它可以將我們的定義變數在所有模板中可見。
如何使用呢?
1. 如上述**那樣, context_processor 作為乙個裝飾器修飾乙個函式
2. 函式的返回結果必須是 dict, 然後其 key 將會作為變數在所有模板中可見
當你的很多檢視函式中需要回傳乙個相同的變數的時候,這個時候就可以考慮使用 context_processor 了
上下文 上下文棧
全域性 函式 區域性 在執行全域性 前將window確定為全域性執行上下文 對全域性資料進行預處理 var定義的全域性變數 undefined,新增為window的屬性 function宣告的全域性函式 賦值 fun 新增為window的方法 this 賦值 window 開始執行全域性 在呼叫函式...
中斷上下文 程序上下文
在學習與作業系統相關的知識時候,我們經常遇到程序上下文 中斷上下文,看似熟悉又感覺不是特別清晰。這裡我們從如下幾個方面進行描述。上下文是從英文中context翻譯過來的,指的是一種環境。上下文我們看起來不怎麼熟悉,但是我們可以看context的中文翻譯,或者我們能更加的情形些。context n 語...
全域性上下文與上下文
全域性上下文由main函式載入系統的主架構和主事件迴圈和全域性資料構成。是上帝創造世界時,建立的基礎事物。萬物之始,大道至簡,衍化至繁。全域性上下文代表著程式執行所需要的基礎資源。是程式執行的基礎。全域性上下文的特徵是在程式執行期間常駐記憶體。全域性上下文的生命週期和應用程式的生命週期相同。與應用程...