不香不帅的个人主页

最后更新:2026-01-21
原创 Jinja2 使用Python中定义的函数
浏览: 100

Jinja在进行模板渲染的过程中,很多情况下会涉及到调用后台Python代码的情况。作为功能强大的Python 引擎自然能轻松的解决这个问题。

Jinja本身自带了很多内置的过滤器,可以直接拿来使用。例如:safe、format、escape等。而他的强大之处就是可以在后台定义新的过滤器,而在模板中直接去使用。

例如:我要把一个查询出来的后台ID作为html页面访问的参数,但是我又不想直接将ID直接暴露给浏览器连接中。所以我想把这个ID进行加密编码后渲染出来。这样,我们就可以在后台定义一个过滤器:

@app.template_filter("encryptUrlParam")
def encryptUrlParam(ps:str):
    return StaticFuncs.encryptUrlParam(ps)

StaticFuncs.encryptUrlParam(ps)静态函数将传入的ps参数转换为加密后的Url参数。在模板中渲染时可直接使用“encryptUrlParam”过滤器。例如:

{% if pages %}
    <div class="page-bar">
        <ul class="page-bar-content">
            {% for pageIdx in pages %}
            <li class="page-bar-item">
                {% if articleResult.Page==pageIdx %}
                <label>{{ pageIdx }}</label>
                {% else %}
                <a href="{{url_for('label_list',label=label|urlencode,page=pageIdx|encryptUrlParam)}}">{{ pageIdx }}</a>
                {% endif %}
            </li>
            {% endfor %}
        </ul>
    </div>
{% endif %}


其中“page=pageIdx|encryptUrlParam”便是将pageIdx通过过滤器encryptUrlParam进行加密后的链接。

提醒:原创不易,如果您需要转载本文。为表对本人的尊重烦请标注出本文的出处。内容包括:作者和本文链接。可直接复制以下内容:

原文作者:<a href='http://www.hn-lxm.com' target="_blank">不香不帅</a>

原文链接: <a href='http://www.hn-lxm.com/article/V2lsbGlhbTI5TGVl.html' title='Jinja2 使用Python中定义的函数' target="_blank">Jinja2 使用Python中定义的函数</a>

评论