use*_*829 2 python jinja2 flask
我是Flask的新手。我试图动态生成模板,以便可以通过AJAX发出请求并将行附加到表中:
@app.template_filter('my_multiplier')
def my_multiplier(n):
return n*10
@app.route('/')
def index():
content = [1,2,3,4,5]
tmplate = get_template()
html = tmplate.render(content=content)
return render_template('index.jinja2',html=html)
def get_template():
html = Template(u'''\
{% for n in conent %}
<tr><td>{{ n | my_multiplier }}</td></tr>
{% endfor %}''')
return html
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:TemplateAssertionError:没有名为“ my_multiplier”的过滤器
我究竟做错了什么?(如果我排除过滤器,则模板可以很好地呈现)
您是否注册了过滤器?
environment.filters['my_multiplier'] = my_multiplier
Run Code Online (Sandbox Code Playgroud)
http://jinja.pocoo.org/docs/api/#custom-filters
希望这可以帮助!
添加一些信息,因为我在搜索类似问题时发现了这一点。
来自http://flask.pocoo.org/docs/0.10/templating/ 的当前答案:
注册过滤器
如果你想在 Jinja2 中注册你自己的过滤器,你有两种方法可以做到这一点。您可以手动将它们放入应用程序的 jinja_env 中,也可以使用 template_filter() 装饰器。
以下两个示例工作相同,并且都反转对象:
Run Code Online (Sandbox Code Playgroud)@app.template_filter('reverse') def reverse_filter(s): return s[::-1]
Run Code Online (Sandbox Code Playgroud)def reverse_filter(s): return s[::-1] app.jinja_env.filters['reverse'] = reverse_filter在装饰器的情况下,如果您想使用函数名称作为过滤器的名称,则该参数是可选的。注册后,您可以像 Jinja2 的内置过滤器一样在模板中使用过滤器,例如,如果您在应用程序上下文中有一个名为 mylist 的 Python 列表:
Run Code Online (Sandbox Code Playgroud){% for x in mylist | reverse %}{% endfor %}
对于上面的示例,这意味着 llamawithabowlcut 是正确的,并且 OP 的代码应该如图所示工作。
我试图重建所描述的用例,但我不确定 OPTemplate从哪里获得类 - 完整的代码在这里会更有帮助。
| 归档时间: |
|
| 查看次数: |
5183 次 |
| 最近记录: |