【问题标题】:Django: allow line break from textarea inputDjango:允许从文本区域输入换行
【发布时间】:2010-12-26 01:55:51
【问题描述】:

如何允许在 django 中的 textarea 输入中换行以便稍后在页面上显示此输入?

【问题讨论】:

  • {{value|striptags|urlize|autolinebreaks} 我愿意

标签: html django


【解决方案1】:

linebreaks

用适当的 HTML 替换纯文本中的换行符;单个换行符成为 HTML 换行符 (<br />),新行后跟一个空行成为段落换行符 (</p>)。

例如:

{{ 值|换行符 }}

如果值为Joel\nis a slug,则输出将为<p>Joel<br />is a slug</p>.

【讨论】:

  • 在回复链接时,请同时将链接提供的相关信息放入您的帖子中,以防网站将来出现故障
  • 对于像我这样正在寻找 jinja2 解决方案的人,下面的 stackoverflow 链接可以回答这个问题。我很难找到这个答案,所以把链接放在这里stackoverflow.com/questions/10436458/…
  • 有没有办法保留\n 字符以用于呈现html 之外的其他内容,例如电子邮件、输入值或javascript?
  • 注意:对于模型,该字段应为TextField,而不是CharField
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    我在模板中有一个用于用户最少自定义输入的文本区域,我希望保留用户插入的任何格式化文本以保持不变。 解决方案,我只是将 Model 变量更改为 TextField 类型。它甚至在管理员中显示用户格式化的文本。 :)

    例如

    class Uadds(models.Model):
        title       = models.CharField(max_length = 50)
        description = models.TextField(max_length = 1000)
    

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 你不应该这样做,它会给你带来许多潜在的安全问题。使用接受的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-30
      相关资源
      最近更新 更多