首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在django中扩展urlize

在django中扩展urlize
EN

Stack Overflow用户
提问于 2010-02-19 18:58:23
回答 4查看 8K关注 0票数 36

django.utils.html的urlize函数将urls转换为可点击的链接。我的问题是,我想在"< href..>“中附加一个target="_blank”,这样我就可以在一个新的标签页中打开这个链接。有没有办法扩展urlize函数来接收额外的参数?或者我应该使用正则表达式制作一个自定义过滤器来做这些事情?这是有效的吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-19 19:08:51

内置urlize()中没有这样做的功能。由于Django的许可,您可以将django.utils.html.urlizedjango.template.defaultfilters.urlize的代码复制到您的项目或单独的应用程序中,并使用新的定义。

票数 6
EN

Stack Overflow用户

发布于 2010-03-24 20:09:35

您可以添加自定义筛选器,如here所述

我用的是这个:

代码语言:javascript
复制
# <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)

用法示例:

代码语言:javascript
复制
{% load url_target_blank %}
...
{{ post_body|urlize|url_target_blank }}

对我来说很好用:)

票数 65
EN

Stack Overflow用户

发布于 2011-10-15 16:13:17

最短的版本,我在我的项目中使用。创建一个新的过滤器,它扩展了Django的默认过滤器:

代码语言:javascript
复制
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"'))
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2295725

复制
相关文章

相似问题

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