পাঠ্য কেটে ফেলতে জ্যাঙ্গো টেমপ্লেট ট্যাগ


91

জাজানোতে truncatewordsটেমপ্লেট ট্যাগ রয়েছে, যা প্রদত্ত শব্দ গণনায় পাঠ্য কেটে দেয়। তবে ট্র্যাঙ্কেটচার্সের মতো কিছুই নেই ।

প্রদত্ত চর-দৈর্ঘ্যের সীমাতে টেমপ্লেটের পাঠ্য কেটে দেওয়ার সর্বোত্তম উপায় কী?

উত্তর:



62
{{ value|slice:"5" }}{% if value|length > 5 %}...{% endif %}

হালনাগাদ

সংস্করণ ১.৪ থেকে, জ্যাঙ্গো এর জন্য একটি বিল্ট-ইন টেম্পলেট ট্যাগ রয়েছে :

{{ value|truncatechars:9 }}

যেহেতু আমি প্রি-১.৪ জাঙ্গো নিয়ে কাজ করছি, এটি আমার প্রয়োজন ঠিক তাই। ধন্যবাদ!
ট্রে পাইপমিয়ার

4
truncatecharsফিল্টার ডিফল্টরূপে একটি উপবৃত্ত চরিত্র যোগ করা হয়েছে।
cnfw

11

আমি আমার নিজস্ব টেম্পলেট ফিল্টার তৈরি করেছি, যা (... শেষ শব্দটি) স্ট্রিংয়ের শেষেও "..." যুক্ত করে:

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

4
এটির ডিফল্ট এখন এটি জঙ্গো।
পুলকিত শর্মা

6

আপনি যদি নিজের কাস্টম টেম্পলেট ট্যাগ তৈরি করতে পছন্দ করেন তবে এতে জ্যাঙ্গো ইউজ ট্রুঙ্কেটর ব্যবহার করার কথা বিবেচনা করুন । নীচে একটি নমুনা ব্যবহার:

>>> 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)



2

আপনি অনুরূপ কোড সহ আপনার লক্ষ্য অর্জন করতে পারেন:

{{ value_of_text|truncatechars:NUM_OF_CHARS_TO_TRUNCATE}}

NUM_OF_CHARS_TO_TRUNCATEছেড়ে যাওয়ার চরগুলি কোথায় ।


1

ধন্যবাদ, তবে এটি আমার প্রয়োজনের মতো নয়।
গ্রিগি

তা কেমন করে? এটি স্ট্রাইস স্লাইস করতে ব্যবহৃত হতে পারে।
ইগনাসিও ওয়াজকেজ-আব্রামগুলি

ডকুমেন্টেশন বলছে এটি তালিকার জন্য। এছাড়াও এটি কাটা পাঠ্যে "..." যুক্ত করে না।
গ্রিগি

4
"..." কেবলমাত্র যদি এটি কেটে ফেলা হয় তবে যুক্ত করা দরকার।
গ্রিগি

4
এটি ওপি-র প্রশ্নের উত্তর দেয় এবং এটি জ্যাঙ্গোর পুরানো সংস্করণগুলির সাথে কাজ করবে। যদিও আরও নতুন সংস্করণগুলি truncatecharsপছন্দ করা উচিত, কারণ এটি আরও স্পষ্ট।
আয়তক্ষেত্রাকার

0

একটি "ট্রাঙ্কেট" ফিল্টার যুক্ত করা 4 বছরের জন্য একটি বৈশিষ্ট্য অনুরোধ ছিল কিন্তু অবশেষে ট্রাঙ্কে চলে এসেছিল, যতদূর আমি বুঝতে পেরেছি https://code.djangoproject.com/ticket/5025 - সুতরাং আমাদের পরবর্তী মুক্তি বা ব্যবহারের জন্য অপেক্ষা করতে হবে কাণ্ড

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.