我在Django中構建了一個博客應用程序,當我顯示所有博客時,我想顯示每個條目的小博客摘錄。有誰可以告訴我我該怎麼做?Django中的博客摘錄
這樣做的一種方法是爲每個博客條目創建一個額外的字段並存儲固定數量的單詞,比如說20個單詞。但那麼這將在數據庫中存儲冗餘信息 。有沒有更好的方法來做到這一點?
我在Django中構建了一個博客應用程序,當我顯示所有博客時,我想顯示每個條目的小博客摘錄。有誰可以告訴我我該怎麼做?Django中的博客摘錄
這樣做的一種方法是爲每個博客條目創建一個額外的字段並存儲固定數量的單詞,比如說20個單詞。但那麼這將在數據庫中存儲冗餘信息 。有沒有更好的方法來做到這一點?
我建議你使用truncatewords模板過濾器。
模板例如:
<ul>
{% for blogpost in blogposts %}
<li><b>{{blogpost.title}}</b>: {{blogpost.content|truncatewords:10}}</li>
{% endfor %}
</ul>
如果博客的內容保存爲HTML,使用truncatewords_html
確保開放標籤截斷點後關閉(或striptags
相結合,去除HTML標籤)。
如果要截斷的字符(沒有的話),你可以使用slice
:
{{blogpost.content|slice:":10"}}
(輸出前10個字符)。
如果內容保存爲HTML,與striptags
結合起來,以避免開放標籤的問題:{{blogpost.content|striptags|slice:":10"}}
在Django的1.4,後來,有一個truncatechars過濾器,將截斷字符串,以特定的長度,並與...
終止它。它實際上將其截斷爲特定長度減3,最後3個字符變成...
。
有點關係..
我只是提供了一個回答這個問題:Django strip_tags template filter add space製作包含HTML標記和< p短content>標記段時,可以幫助別人。
幫助轉換這個..
"<p>This is a paragraph.</p><p>This is another paragraph.</p>"
到這個..
'This is a paragraph. This is another paragraph.'
,而不是這個..
'This is a paragraph.This is another paragraph.'
根據,如果你想摘錄可編輯或不確定正確的答案。可以簡單地使用def摘錄(self)來完成,然後將主體切回到特定的字符串長度,然後清理html(如果有的話)。 –