回答
這將是最好編寫自己的過濾器。您可以獲取truncatewords_html的源代碼並將其用作過濾器的模板。它應該進行一些更改以獲得您想要的內容,然後您只需註冊模板並確保將其加載到要使用它的頁面上,並且應該很好。
更多信息 https://docs.djangoproject.com/en/dev/howto/custom-template-tags/
https://code.djangoproject.com/browser/django/trunk/django/template/defaultfilters.py#L288
看到這個頁面你應該能夠複製的方法,只是改變代碼到這一點。
return Truncator(value).words(length, html=True, truncate=' see more')
你想使「看多」的鏈接,這將需要更多的代碼。我會改變過濾器來接受另一個param,它是'see more'的鏈接。
然後,而不是隻有'看更多'傳遞給截斷器,你會通過HTML鏈接。
應注意上面的示例代碼是指我相信的Django的最新開發版本。它不適用於1.3.1,因爲'django.utils.text'庫還沒有'Truncator'類。 – 2011-12-18 21:10:57
好點,我從代碼中獲得了代碼,它是仍在開發中的1.4代碼。 – 2011-12-18 21:15:32
我不得不再次檢查 - 我想了一會兒,我正在運行舊代碼。 – 2011-12-18 21:21:48
如果您想傳遞自定義鏈接,可以這樣做。
定義自定義過濾器:
{{ text|truncatewords_html_with_link:"5, <a class=\"read-more\" href=\"/your_url/\">Read More</a>" }}
我喜歡你放在一起的東西,但是如果你只是將URL傳遞給過濾器,並讓過濾器獲取鏈接並添加HTML,就可以更容易。 – 2011-12-18 21:12:48
是的,我認爲你是對的。嘗試傳遞完整的HTML鏈接有點太雜亂。只是如果你想定製'閱讀更多'鏈接。 – 2011-12-18 21:20:58
是的,我猜如果你想自定義閱讀更多的鏈接,你可以通過它作爲第二個參數,並讓它默認閱讀更多,如果不通過 – 2011-12-18 21:36:04
在Django 1.8相關的代碼讀取:
from django import template
from django.utils.safestring import mark_safe
from django.utils.text import truncate_html_words
register = template.Library()
@register.filter
def truncatewords_html_with_link(value, arg):
"""
Truncates HTML after a certain number of words and concatenates a link
Argument: String - Number of words to truncate after and the link,
separated by a comma
"""
arg_list = arg.split(',')
try:
length = int(arg_list[0])
except ValueError:
return value
return mark_safe(truncate_html_words(value, length, arg_list[1]))
從你的模板調用它。如果你正在使用語言環境
truncate = pgettext(
'String to return when truncating text',
'%(truncated_text)s...')
和翻譯文件,將以下內容放入您的*.po
文件中:
msgid "String to return when truncating text"
msgstr "Short version: %(truncated_text)s <a class='see-more-link'>see more</a>"
雖然,根據點擊鏈接時發生的情況,添加它可能不會很有幫助。您可以使用另一個佔位符,但是您必須確保使用此消息字符串來替換佔位符。
- 1. 截斷HTML錯誤?
- 2. 截斷HTML液體
- 3. 如何截斷HTML表格
- 4. 在Python中截斷的HTML
- 5. XSL:帶HTML和截斷
- 6. Django截斷,如果不發生截斷,則返回false?
- 7. Django模板標籤截斷文本
- 8. Django的,截斷不正確DOUBLE值:
- 9. Django - dumpdata截斷爲最後n行
- 10. Django的request.REQUEST被截斷數據
- 11. django - 截斷模板標籤的輸出?
- 12. Django的HttpResponseRedirect()+反向()截斷在URL
- 13. Django UUIDField從varchar(36)截斷爲char(32)
- 14. 如何截斷HTML中的文本
- 15. PHP的HTML截斷和UTF-8
- 16. 熊貓html:不截斷長值
- 17. 截斷SharePoint中的HTML屬性值DataFormWebPart
- 18. 如何截斷html中的文本
- 19. 以html格式截斷字符串
- 20. Bunyan stdout截斷
- 21. PHP SQL截斷
- 22. UILabel截斷
- 23. 截斷表sqlkorma
- 24. 截斷條件
- 25. 截斷在Java
- 26. 截斷PyHandle(win32file)
- 27. collection_select截斷
- 28. 截斷集合
- 29. Sitecore Analytics截斷
- 30. WebView截斷
可能重複的[如何發現內容被截斷?](http://stackoverflow.com/questions/1802625/how-to-find-that-the-content-is-truncated) – 2012-03-01 18:57:27