我正在建立一个社交网站。我想知道如何在python中创建一个jinja过滤器来创建任何以@链接开头的单词。
答案 0 :(得分:2)
这是您可以使用的Jinja过滤器:
from flask import Markup
def linkify(text):
return Markup(re.sub(r'@([a-zA-Z0-9_]+)', r'<a href="/\1">@\1</a>', text))
它找到以@
开头的用户名,包含小写或大写字母,数字和下划线。它会将其替换为配置文件的链接(\1
代表其用户名而不包含@
)
以下是您如何将其添加到您的环境中:
app.jinja_env.filters['linkify'] = linkify
从Jinja模板中调用它:
{{ post|linkify }}
修改强>
在Python shell中运行:
>>> import re
>>> text = 'This is a post mentioning @nathancahill and @jacob_bennet'
>>> re.sub(r'@([a-zA-Z0-9_]+)', r'<a href="/\1">@\1</a>', text)
'This is a post mentioning <a href="/nathancahill">@nathancahill</a> and <a href="/jacob_bennet">@jacob_bennet</a>'
你得到相同的输出吗?