[英]How can I create a function similar to current_user?
在 Flask 中,我想了解如何創建一個行為類似於current_user
的 function,因為它無處不在(控制器和視圖),但我很難真正知道要搜索什么來找到答案。
我能找到的關於 SO 的最接近的帖子是這個,但它是針對 Ruby而不是 Python,有人能指出我正確的方向嗎? 謝謝!
到目前為止我所擁有的:
在我的__main__.py
我有這個:
@app.context_processor
def foo_processor():
def foo():
return 'Hello World'
這樣做的結果是我可以在我的 Jinja 模板中訪問{{ foo }}
,而無需從我的 controller 發送它。 不幸的是,我無法within
我的控制器中訪問 foo,這也是我希望能夠做到的。 我是否需要以某種方式導入它,如果需要,如何導入?
如果我理解正確,您需要一個可以在模板和控制器中使用的變量,而不必每次都將其傳遞給模板。 為此,首先,創建一個 function 來獲取變量。 這可能類似於獲取用戶的設置。 然后在上下文處理器中,傳遞這個 function 的結果。 要在您的控制器中也訪問它,請創建一個額外的變量來保存 getter 的值。 請注意,如果 function 返回不同的值,您可能需要調用 function 而不是使用變量。
# create a getter function, this returns the property's value.
def get_property():
return "Test Text"
property = get_property() # this is only to make code pretty later on.
# the context processor passes the property to the templates.
@app.context_processor
def property_processor():
return dict(property=get_property())
在您的控制器中,您可以訪問之前創建的變量。
def view():
if property == true:
return redirect(url_for('index'))
else:
return redirect(url_for('access_denied'))
請注意,如果您的值會改變,您可能需要改用 function 並在每次渲染視圖時調用 getter。 這將使第一個if
語句變為if get_property() == true:
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.