自定义过滤器仅适用于特定名称 jinja2
Custom filter only works for certain name jinja2
所以我尝试在 jinja2 和 flask 中使用自定义过滤器
所以这是问题所在:
这是 html 文件
<h1>Hello, {{ user.nickname | reverse }}!</h1>
这是py文件
from app import app
def reverse_filter(s):
return s[::-1]
app.jinja_env.filters['reverse'] = reverse_filter
上面的代码运行良好。但是现在,如果我将名称 'reverse' 更改为例如 'mouse'
<h1>Hello, {{ user.nickname | mouse }}!</h1>
然后是新py
from app import app
def mouse_filter(s):
return s[::-1]
app.jinja_env.filters['mouse'] = mouse_filter
它会给我 jinja2.exceptions.TemplateAssertionError: no filter named 'mouse'
真的很奇怪……我是不是做错了什么?
我发现错误了,
我将过滤器放在与 __init__.py
文件不同的文件 (jinja_custom_filter.py
) 中,因此我需要将
from app import jinja_custom_filter.py
在我的 init
文件中以便能够使用它。
虽然
仍然不明白为什么我需要将每个参考文件都放在 __init__.py
中
所以我尝试在 jinja2 和 flask 中使用自定义过滤器 所以这是问题所在:
这是 html 文件
<h1>Hello, {{ user.nickname | reverse }}!</h1>
这是py文件
from app import app
def reverse_filter(s):
return s[::-1]
app.jinja_env.filters['reverse'] = reverse_filter
上面的代码运行良好。但是现在,如果我将名称 'reverse' 更改为例如 'mouse'
<h1>Hello, {{ user.nickname | mouse }}!</h1>
然后是新py
from app import app
def mouse_filter(s):
return s[::-1]
app.jinja_env.filters['mouse'] = mouse_filter
它会给我 jinja2.exceptions.TemplateAssertionError: no filter named 'mouse'
真的很奇怪……我是不是做错了什么?
我发现错误了,
我将过滤器放在与 __init__.py
文件不同的文件 (jinja_custom_filter.py
) 中,因此我需要将
from app import jinja_custom_filter.py
在我的 init
文件中以便能够使用它。
虽然
仍然不明白为什么我需要将每个参考文件都放在__init__.py
中