我为我的jinja模板创建了两个自定义过滤器。当我尝试将两个过滤器应用到一个元素时,只有一个筛选器才能工作。我如何使两个过滤器工作?
{{ post.content|makeimg|taguser|truncate(200)|urlize(40, true) }}除第二个过滤器外,所有过滤器都能工作。前两个过滤器是我做的。
下面是过滤器的代码:
@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))示例员额:
Hey, @john. imghttp://image.com/image.jpeg 发布于 2018-07-15 13:24:20
问题不在于过滤器。这两个过滤器都按预期工作。
您的错误是,您正在两次调用Markup方法。
下面的修复对我有效(只在最后一个过滤器中调用Markup ):
Html模板(未更改):
{{ post.content|makeimg|taguser|truncate(200)|urlize(40, true) }}码
@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)https://stackoverflow.com/questions/30292974
复制相似问题