Django:允许从文本区域输入换行

53

我该如何在Django的文本区域输入中允许换行,并在稍后在页面上显示此输入?


1
我做{{value | striptags | urlize | autolinebreaks}} - Niklas Rosencrantz
4个回答

98

linebreaks

将纯文本中的换行符替换为相应的HTML标记;每个单独的换行符被替换为一个HTML换行符(<br />),每个空行则被替换为HTML段落标记(</p>)。

例如:

{{ value|linebreaks }}

如果value是Joel\n是一只大蛞蝓,输出结果将会是<p>Joel<br />是一只大蛞蝓</p>.


5
好的,我会尽力进行翻译。请提供需要翻译的内容。如有需要,我也可以为您提供相关链接的信息,以免链接失效。 - Mike
1
对于像我这样寻找jinja2解决方案的人,以下stackoverflow链接提供了答案。我花了很长时间才找到这个答案,所以在这里放上链接https://dev59.com/OGkv5IYBdhLWcg3wqimS - dev-vb
有没有办法保留\n字符,用于除了呈现HTML之外的其他事情,例如电子邮件、输入值或JavaScript? - TheJKFever
注意:对于模型,字段应该是 TextField,而不是 CharField - Josh Grinberg

6

不要使用{% autoescape off %}!否则用户控制的输入可能不会被转义,这是一种安全风险。如上所述,请使用linebreaks或linebreaksbr


请注意: 本文档中的“用户控制的输入”是指来自用户的数据,例如表单提交、GET 或 POST 请求等。

0
我在模板中为用户提供了一个文本区域,以便进行最小自定义输入,并希望保留用户插入的任何格式化文本。 解决方案很简单,我只需将模型变量更改为TextField类型即可。它甚至可以在管理界面中显示用户格式化的文本。 :)
例如:
class Uadds(models.Model):
    title       = models.CharField(max_length = 50)
    description = models.TextField(max_length = 1000)

标题不会显示换行符,但是描述会显示。 我还没有用富文本编辑器测试过这个... 希望这有所帮助。


-2

使用{% autoescape off %} {{ your_variable }} {% endautoescape %}


你不应该这样做,这会让你面临许多潜在的安全问题。请使用被接受的答案。 - Matt Seymour

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接