Django memiliki truncatewords
tag cetakan, yang memotong teks pada jumlah kata yang diberikan. Tapi tidak ada yang seperti truncatechars .
Apa cara terbaik untuk memotong teks dalam template pada batas panjang karakter tertentu?
django
django-templates
grigy
sumber
sumber
{{ value|slice:"5" }}{% if value|length > 5 %}...{% endif %}
Memperbarui
Sejak versi 1.4, Django mempunyai tag cetakan built-in untuk ini:
sumber
truncatechars
saringan menambahkan karakter elips secara default.Saya membuat filter template saya sendiri, yang menambahkan "..." ke akhir (kata terakhir dari) string (terpotong) juga:
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
sumber
Jika Anda lebih suka membuat tag cetakan kustom Anda sendiri, pertimbangkan untuk menggunakan Django util Truncator di dalamnya. Berikut ini adalah contoh penggunaan:
>>> 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 ...'
Kemudian Anda dapat memasukkannya ke dalam tag template:
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)
sumber
Ini dia dalam Dokumentasi Django, tag cetakan dan filter bawaan: truncatechars
sumber
Anda harus menulis filter template kustom: http://docs.djangoproject.com/en/dev/howto/custom-template-tags/#writing-custom-template-filters
Lihat bagaimana
truncatewords
dibangundjango.utils.text
sumber
Anda dapat mencapai tujuan Anda dengan kode serupa:
{{ value_of_text|truncatechars:NUM_OF_CHARS_TO_TRUNCATE}}
di mana
NUM_OF_CHARS_TO_TRUNCATE
jumlah karakter yang tersisa.sumber
slice
sumber
truncatechars
harus lebih disukai, karena lebih eksplisit.Menambahkan filter "truncate" adalah permintaan fitur selama 4 tahun tetapi akhirnya masuk ke trunk, sejauh yang saya mengerti https://code.djangoproject.com/ticket/5025 - jadi kami harus menunggu rilis atau penggunaan berikutnya bagasi.
sumber