Django में truncatewords
टेम्प्लेट टैग है, जो दिए गए शब्द गणना पर पाठ को काटता है। लेकिन वहाँ की तरह कुछ भी नहीं है truncatechars ।
दिए गए चार्ट की लंबाई सीमा पर पाठ को काटने का सबसे अच्छा तरीका क्या है?
जवाबों:
इसे हाल ही में Django 1.4 में जोड़ा गया है। उदाहरण के लिए:
{{ value|truncatechars:9 }}
{{ value|slice:"5" }}{% if value|length > 5 %}...{% endif %}
अपडेट करें
संस्करण 1.4 के बाद से, Django के पास इसके लिए एक अंतर्निहित टेम्पलेट टैग है:
{{ value|truncatechars:9 }}
truncatechars
फिल्टर डिफ़ॉल्ट रूप से एक अंडाकार चरित्र कहते हैं।
मैंने अपना स्वयं का टेम्प्लेट फ़िल्टर बनाया, जो "... (अंतिम शब्द) के अंत में (छोटा) स्ट्रिंग जोड़ देता है:
from django import template
register = template.Library()
@register.filter("truncate_chars")
def truncate_chars(value, max_length):
if len(value) > max_length:
truncd_val = value[:max_length]
if not len(value) == max_length+1 and value[max_length+1] != " ":
truncd_val = truncd_val[:truncd_val.rfind(" ")]
return truncd_val + "..."
return value
यदि आप अपना स्वयं का कस्टम टेम्प्लेट बनाना पसंद करते हैं, तो इसमें Django उपयोग ट्रंकेटर का उपयोग करने पर विचार करें । निम्नलिखित एक नमूना उपयोग है:
>>> from django.utils.text import Truncator
>>> Truncator("Django template tag to truncate text")
<Truncator: <function <lambda> at 0x10ff81b18>>
>>>Truncator("Django template tag to truncate text").words(3)
u'Django template tag...'
Truncator("Django template tag to truncate text").words(1)
u'Django...'
Truncator("Django template tag to truncate text").chars(20)
u'Django template t...'
Truncator("Django template tag to truncate text").chars(10)
u'Django ...'
फिर आप इसे टेम्प्लेट टैग में डाल सकते हैं:
from django import template
from django.utils.text import Truncator
register = template.Library()
@register.filter("custom_truncator")
def custom_truncator(value, max_len, trunc_chars=True):
truncator = Truncator(value)
return truncator.chars(max_len) if trunc_chars else truncator.words(max_len)
यहाँ यह Django डॉक्यूमेंटेशन, बिल्ट-इन टेम्पलेट टैग्स और फिल्टर्स: ट्रंकटचर्स में है
आपको एक कस्टम टेम्पलेट फ़िल्टर लिखना चाहिए: http://docs.djangoproject.com/en/dev/howto/custom-template-tags/#writing-custom-template-filters
कैसे truncatewords
बनाया गया है पर एक नज़र हैdjango.utils.text
आप समान कोड के साथ अपना लक्ष्य प्राप्त कर सकते हैं:
{{ value_of_text|truncatechars:NUM_OF_CHARS_TO_TRUNCATE}}
जहां NUM_OF_CHARS_TO_TRUNCATE
छोड़ने के लिए वर्णों की संख्या है।
truncatechars
पसंद किया जाना चाहिए, क्योंकि यह अधिक स्पष्ट है।
"ट्रंकट" फ़िल्टर जोड़ना 4 वर्षों के लिए एक फीचर अनुरोध था, लेकिन अंत में ट्रंक में उतरा, जहां तक मैं समझता हूं कि https://code.djangoproject.com/ticket/5025 - इसलिए हमें अगली रिलीज़ की प्रतीक्षा करनी होगी या उपयोग करना होगा सूँ ढ।