2012-08-28 40 views
3

我正在從C#.NET遷移到Python/Flask。Flask中有部分視圖/代碼嗎?

在.NET我有MasterPage, UserControl, PartialView每個都有自己的代碼背後。

例如我可以將檢查登錄功能保存在Login.ascx.cs中,並在任何地方渲染Login.ascx。如果登錄,則顯示歡迎消息,否則顯示登錄表單。

但是在Flask中我只找到了包含靜態html文件的{% include 'login.html' %}

如何在Flask中實現此設計?

我現在可能已經應答:

我不使用g.user,這就是爲什麼我來到這裏尋求幫助。其他人建議@app.context_processor。我正在嘗試,看起來像我想要的。類似的全球可訪問設計爲g

回答

2

儘管它的名字可能會讓你覺得它include不會插入靜態HTML文件的內容。它實際上插入呈現的內容 Jinja模板,它的功能非常像來自MVC的部分視圖(如果我正確理解它們)。它默認爲has access to the parent template context。所以,如果,例如,你是存儲用戶上g.user,因爲g默認情況下訪問您可以簡單地這樣做:

<-- login.html --> 
{% if g.user.is_anonymous() %} 
Login form goes here 
{% else %} 
Greetings {{g.user.full_name}}! 
{% endif %} 

而且{% include "login.html" %},無論你想登錄表單/用戶問候露面。

@app.context_processor 
def add_user(): 
    # Get user 
    return {"user": user} 
+0

我沒有使用'G:如果你想確保user是所有的模板訪問你的確可以使用context_processor添加user

響應編輯

。用戶「,這就是爲什麼我來這裏尋求幫助。其他人建議'@ app.context_processor'。我正在嘗試,看起來像我想要的。與'g'類似的'global accessible'設計。謝謝。 – hbrls

+0

@hbrlovehaku - 理解並更新了我的答案:-) –

0

你應該看看Flask-Login,它是Flask的擴展。配置完成後,您可以達到您的要求。