簡體   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