我是GAE / Python的新手。
我有一个调用客户过滤功能的jinja2模板:
电话会议如下:
{% if constant-parameter|AccessOK %}
<li><a href="/tokens-step1">Tokens</a></li>
{% endif %}
我在页面上定义了调用渲染模板的过滤器:
TEMPLATE_DIR = os.path.join(os.path.dirname(__file__), 'templates')
jinja_environment = \
jinja2.Environment(autoescape=True, loader=jinja2.FileSystemLoader(TEMPLATE_DIR))
jinja_environment.filters['AccessOK'] = AccessOK
当我运行它时,在启动应用程序引擎后第一次访问网站时调用过滤器(我有记录条目)。
当我访问其他页面或刷新页面时,永远不会再次调用过滤器。
我需要在每个页面视图上执行过滤器。
我被告知这是因为参数是常量,如果我将其更改为变量,它将每次执行。在我的情况下,我需要传递常量,所以我尝试传递2个参数(其中变量= currentuser并且仅存在以欺骗系统每次执行过滤器。)
我收到错误消息,表明系统无法识别第二个参数。
有人能告诉我如何确保每次都调用客户过滤器,或者举例说明如何传递2个参数?
答案 0 :(得分:0)
这可能不是最优雅的解决方案,但它确实有效。
我添加了一个更改变量作为附加参数(在本例中为currentuser)。这意味着我必须传递2个参数。
我的模板语句现在看起来像:
{% if currentuser|AccessOK(constant-parameter) %}
<li><a href="/tokens-step1">Tokens</a></li>
{% endif %}
我的功能看起来像这样:
def AccessOK(xCurrentUser, PermissionID):
我忽略了函数中的xCurrentUser参数。
如果有人有更好的解决方案,请添加它。
感谢。