欢迎光临
我们一直在努力

Jinja2 使用Python中定义的函数

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进行加密后的链接。

原创不易,可以访问我的个人主页查看更多相关内容:不香不帅的个人主页

赞(0)
未经允许不得转载:171主机测评 » Jinja2 使用Python中定义的函数
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址