首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在元素上使用多个自定义jinja过滤器

如何在元素上使用多个自定义jinja过滤器
EN

Stack Overflow用户
提问于 2015-05-17 22:55:34
回答 1查看 3.7K关注 0票数 2

我为我的jinja模板创建了两个自定义过滤器。当我尝试将两个过滤器应用到一个元素时,只有一个筛选器才能工作。我如何使两个过滤器工作?

代码语言:javascript
复制
{{ post.content|makeimg|taguser|truncate(200)|urlize(40, true) }}

除第二个过滤器外,所有过滤器都能工作。前两个过滤器是我做的。

下面是过滤器的代码:

代码语言:javascript
复制
@app.template_filter('taguser')
    def taguser(text):
    return Markup(re.sub(r'@([a-zA-Z0-9_]+)', r'<a href="/\1">@\1</a>', text))

@app.template_filter('makeimg')
    def makeimg(text):
    return Markup(re.sub(r'img([a-zA-Z0-9_./:-]+)', r'<img width="100px" src="\1">', text))

示例员额:

代码语言:javascript
复制
Hey, @john. imghttp://image.com/image.jpeg 
EN

回答 1

Stack Overflow用户

发布于 2018-07-15 13:24:20

问题不在于过滤器。这两个过滤器都按预期工作。

您的错误是,您正在两次调用Markup方法。

下面的修复对我有效(只在最后一个过滤器中调用Markup ):

Html模板(未更改):

代码语言:javascript
复制
{{ post.content|makeimg|taguser|truncate(200)|urlize(40, true) }}

代码语言:javascript
复制
@app.template_filter('taguser')
def taguser(text):
    return Markup(re.sub(r'@([a-zA-Z0-9_]+)', r'<a href="/\1">@\1</a>', text))

@app.template_filter('makeimg')
def makeimg(text):
    return re.sub(r'img([a-zA-Z0-9_./:-]+)', r'<img width="100px" src="\1">', text)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30292974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档