来自django.utils.html的urlize函数将url转换为可单击的链接.我的问题是我想在"<href ..>"中添加一个target ="_ blank",以便在新标签中打开此链接.有什么办法可以扩展urlize函数来接收额外的参数吗?或者我应该使用正则表达式来制作自定义过滤器来执行此操作?这有效吗?
Woj*_*eks 59
您可以添加自定义过滤器,如描述在这里:
我用过这个:
def url_target_blank(text):
return text.replace('<a ', '<a target="_blank" ')
url_target_blank = register.filter(url_target_blank, is_safe = True)
Run Code Online (Sandbox Code Playgroud)
用法示例:
{{ post_body|urlize|url_target_blank }}
Run Code Online (Sandbox Code Playgroud)
对我来说工作正常:)
Sim*_*ger 13
最短的版本,我在我的项目中使用.创建一个新的过滤器,扩展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"'))
Run Code Online (Sandbox Code Playgroud)
内置功能没有urlize()执行此操作的功能。由于Django的许可,您可以复制的代码django.utils.html.urlize,并django.template.defaultfilters.urlize为您的项目或到一个单独的应用程序,并使用新的定义来代替。
| 归档时间: |
|
| 查看次数: |
6744 次 |
| 最近记录: |