Django มีtruncatewords
แท็กเทมเพลตซึ่งจะตัดข้อความตามจำนวนคำที่กำหนด แต่มีอะไรที่ชอบtruncatechars
วิธีใดที่ดีที่สุดในการตัดข้อความในเทมเพลตที่ขีดจำกัดความยาวถ่านที่กำหนด
Django มีtruncatewords
แท็กเทมเพลตซึ่งจะตัดข้อความตามจำนวนคำที่กำหนด แต่มีอะไรที่ชอบtruncatechars
วิธีใดที่ดีที่สุดในการตัดข้อความในเทมเพลตที่ขีดจำกัดความยาวถ่านที่กำหนด
คำตอบ:
{{ 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 util Truncatorในนั้น ต่อไปนี้เป็นตัวอย่างการใช้งาน:
>>> 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 แท็กเทมเพลตในตัวและตัวกรอง: truncatechars
คุณควรเขียนตัวกรองเทมเพลตที่กำหนดเอง: 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 - ดังนั้นเราจึงต้องรอรุ่นถัดไปหรือใช้ กระโปรงหลังรถ.