我有一个类似的Textfield:
class Comment(models.Model):
...
comment_text = models.TextField(max_length=650, blank=True, null=True)
当某人在TextField
中发布链接时,例如www.stackoverflow.com,我希望它可以被点击(嵌套在<a>
标签中)。有什么办法可以使用代码而不使用文本编辑器来做到这一点?
答案 0 :(得分:7)
您可以为此使用urlize
[Django-doc]模板过滤器标签。所以不用写:
{{ some_comment.comment_text }}
您应该写:
{{ some_comment.comment_text|urlize }}
根据文档,我们得到:
将文本中的URL和电子邮件地址转换为可点击的链接。
此模板标记适用于前缀为
http://
,https://
, 或www.
。例如,https://goo.gl/aia1t
将被转换,但是goo.gl/aia1t
不会。它还支持以原始顶部之一结尾的仅域链接 级别域(
.com
,.edu
,.gov
,.int
,.mil
,.net
和.org
)。例如,djangoproject.com
被转换。(..)
如果值为
"Check out www.djangoproject.com"
,则输出为"Check out <a href="http://www.djangoproject.com" rel="nofollow">www.djangoproject.com</a>"
。
一个相关的模板过滤器是urlizetrunc
[Django-doc],其中的链接不仅容易辨认,而且也被截断。例如:
{{ some_comment.comment_text|urlizetrunc:15 }}
在这种情况下,用户看到的URL (当然不是链接本身)被截断为15个字符,因为链接可能很长而且混乱。
答案 1 :(得分:1)
Django具有urlize template filter,它将自动检测URL和电子邮件地址,并将它们转换为适当的超链接。
这里的文档实际上有点薄,所以我建议还阅读urlize函数源中的文档字符串以获取更多信息。