如何在網站上創建小部件,如登錄表單,動態菜單(取自數據庫的項目),網站統計信息?如何在Flask的頁面上顯示小部件?
我知道你可以渲染一個將擴展出基本模板的模板。在基本模板中,您可以創建這些小部件。
但我不知道如何將邏輯從基本模板移動到我的代碼。例如,塊的選擇數據。這樣的行爲當然可以在模板中完成,但在我看來這將是一個糟糕的方法。
對不起,我的英語不好。如果你不明白,我會嘗試重述。
如何在網站上創建小部件,如登錄表單,動態菜單(取自數據庫的項目),網站統計信息?如何在Flask的頁面上顯示小部件?
我知道你可以渲染一個將擴展出基本模板的模板。在基本模板中,您可以創建這些小部件。
但我不知道如何將邏輯從基本模板移動到我的代碼。例如,塊的選擇數據。這樣的行爲當然可以在模板中完成,但在我看來這將是一個糟糕的方法。
對不起,我的英語不好。如果你不明白,我會嘗試重述。
你會使用一個名爲WTForms的python庫。它可以幫助您編寫代碼,以創建可以使用jinja2模板呈現的數據庫支持的表單和其他小部件。
class YourForm(Form):
your_field1 = TextField()
....
your_fieldn = SubmitField()
@app.route('/')
def view():
form=YourForm()
return render_template('your.html', form=form)
In your.html
<form >
{{ form.your_field1 }}
....
{{ form.your_fieldn }}
</form>
檢查出form validation and rendering瞭解更多關於它的這個燒瓶模式。
編輯:要創建適用於所有模板的全局變量,有兩種方式:
您可以使用global dict of jinja environment。 這是代碼:
app.jinja_env.globals.update({'variable':1})
您可以使用ContextProcessor。代碼:
@app.context_processor
def inject_variable():
return dict(variable=1)
現在你可以在你的應用程序中的任何模板訪問variable
。
我找到了[Context Processors](http://flask.pocoo.org/docs/templating/)。看來我需要。使用它是否正確? – Ticksy 2012-07-10 21:09:17
如果您希望這些值始終在您渲染的每個模板中都可用,那麼絕對是。 – 2012-07-11 04:16:49