my_text = '''The template system works in a two-step process: compiling and rendering. A compiled template is, simply, a list of Node objects.
Thus, to define a custom template tag, you specify how the raw template tag is converted into a Node (the compilation function), and what the node’s render() method does.'''
@register.filter(is_safe=True)
def format_description(description):
text = ''
for i in description.split('\n'):
text += ('<p class="site-description">' + i + '</p>')
return text
我像这样在原始html中获取输出
<p class="site-description">The template system works in a two-step process: compiling and rendering. A compiled template is, simply, a list of Node objects.</p><p class="site-description"> </p><p class="site-description"> Thus, to define a custom template tag, you specify how the raw template tag is converted into a Node (the compilation function), and what the node’s render() method does.</p>
代替
模板系统分两步工作 过程:编译和渲染。简单来说,一个已编译的模板是 节点对象列表。
因此,要定义自定义模板标签, 您可以指定原始模板标签如何转换为节点( 编译函数)以及节点的render()方法的作用。
想法是获取文本并为拆分后创建的列表的每个部分创建不同的段落,以便可以将文本格式化为漂亮的 和密封性
答案 0 :(得分:2)
要禁用自动转义,可以使用mark_safe
方法:
from django.utils.safestring import mark_safe
@register.filter(is_safe=True)
def format_description(description):
text = ''
for i in description.split('\n'):
text += ('<p class="site-description">' + i + '</p>')
return mark_safe(text)
答案 1 :(得分:2)
文档Filters and auto-escaping中对此进行了明确说明。
您需要将输出标记为安全。
from django.utils.safestring import mark_safe
...
return mark_safe(text)