繁体   English   中英

渲染textfield和charfield扼杀额外的空格(Django / Python)

[英]rendering of textfield and charfield chomps out extra whitespace (Django/Python)

我注意到我的模板正在渲染我的model.CharField和model.TextField而没有任何多余的空格。

例如,如果我输入数据,如...

This     is a           test


to see what  happens.

渲染的对象字段将显示为......

This is a test to see what happens.

这是Django的故意特征还是我错过了某些过滤器或参数?

我用一些调试代码(print object.field)检查了字段本身,它确实包含额外的空格,所以问题出在渲染方面。

如何允许用户在TextFields中输入数据段落? 如何保留用户可能输入的空白​​?

正如您在StackOverflow中看到的那样,您的空间不会显示,这来自您的问题的来源:

This     is a           test


to see what  happens.

将保存在数据库中:

This     is a           test\n\n\nto see what  happens.

渲染为html时遇到问题:

  1. 除非在<pre></pre>标记之间,否则浏览器会显示单词之间的额外空格

  2. 换行符将呈现为纯文本换行符,除非在<pre></pre>标记之间,否则不会在浏览器中显示。

对于空格,您可以使用此类模板过滤器将其替换为与其等效的html实体: &nbsp;

要在HTML换行符中转换数据库换行符,请使用linebreaksbr内置过滤器。 例如,如果{{ foo }}是: test\\nbar ,那么{{ foo|linebreaksbr }}将呈现: test<br />bar

  1. 在某些应用中创建一个“templatetags”文件夹 ,其中包含__init__.py文件。

  2. 例如,在someapp / templatetags / replace_tag.py中保存代码段

  3. 在模板加载模板过滤器 {% load replace_tag %}

  4. 将replace和linebreaksbr结合起来{{ foo|linebreaksbr|replace:" ","&nbsp;" }} {{ foo|linebreaksbr|replace:" ","&nbsp;" }}

您还可以创建自己的模板过滤器,将文本处理为您需要的HTML。 在任何情况下,请参阅自定义模板筛选器文档以获取完整信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM