django.utils.html的urlize函数将urls转换为可点击的链接。我的问题是,我想在"< href..>“中附加一个target="_blank”,这样我就可以在一个新的标签页中打开这个链接。有没有办法扩展urlize函数来接收额外的参数?或者我应该使用正则表达式制作一个自定义过滤器来做这些事情?这是有效的吗?
发布于 2010-02-19 19:08:51
内置urlize()中没有这样做的功能。由于Django的许可,您可以将django.utils.html.urlize和django.template.defaultfilters.urlize的代码复制到您的项目或单独的应用程序中,并使用新的定义。
发布于 2010-03-24 20:09:35
您可以添加自定义筛选器,如here所述
我用的是这个:
# <app name>/templatetags/url_target_blank.py
from django import template
register = template.Library()
def url_target_blank(text):
return text.replace('<a ', '<a target="_blank" ')
url_target_blank = register.filter(url_target_blank, is_safe = True)用法示例:
{% load url_target_blank %}
...
{{ post_body|urlize|url_target_blank }}对我来说很好用:)
发布于 2011-10-15 16:13:17
最短的版本,我在我的项目中使用。创建一个新的过滤器,它扩展了Django的默认过滤器:
from django import template
from django.template.defaultfilters import stringfilter
from django.utils.safestring import mark_safe
from django.utils.html import urlize as urlize_impl
register = template.Library()
@register.filter(is_safe=True, needs_autoescape=True)
@stringfilter
def urlize_target_blank(value, limit, autoescape=None):
return mark_safe(urlize_impl(value, trim_url_limit=int(limit), nofollow=True, autoescape=autoescape).replace('<a', '<a target="_blank"'))https://stackoverflow.com/questions/2295725
复制相似问题