[英]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.