মডিউল ২.৭ : জ্যাংগো টেমপ্লেট ল্যাংগুয়েজ পার্ট ২

আজকে আমরা জানবো কিভাবে backend থেকে আসা কনটেক্সট ডাটা গুলা কে ফিল্টার করতে পারি। ফিল্টার করা বলতে বুঝাচ্ছি যে, টেমপ্লেট এর মধ্যে কনটেক্সট ডাটার কোনো ওয়ার্ড কে upper case, lower case করবো বা ওয়ার্ড বা লিস্ট বা ডিকশনারি এর লেন্থ চেক করবো বা date নিয়ে কাজ করবো ইত্যাদি।

// Syntax for writing filtering code 
{{ variable_name | filter_name }}

আমাদের কনটেক্সট ডাটা

from django.shortcuts import render
import datetime
# Create your views here.
def home(request):
    d = {'author' : 'Rahim', 'age' : 5, 'lst' : ['python','is','best'], 'birthday' : datetime.datetime.now(), 'val' : '' ,'courses' : [
        {
            'id' : 1,
            'name' : 'Python',
            'fee' : 5000
        },
        {
            'id' : 2,
            'name' : 'Django',
            'fee' : 10000 
        },
        {
            'id' : 3,
            'name' : 'C',
            'fee' : 1000 
        },
    ]}
    return render(request, 'home.html', d)

আসো কিছু এক্সাম্পল দেখি।

Example 1: আমরা চাচ্ছি যে আমাদের context ডাটা lst এর ভ্যালু গুলা join করাবো আর তাদের মাঝে - থাকবে। Join মানে string of লিস্ট থেকে শুধু মাত্র স্ট্রিং এ কনভার্ট করা।

<h1>{{ lst | join:" - " }}</h1>
output : 
python - is - best

Example 2: ধরো আজকে আমাদের রহিম এর বার্থডে , বার্থডে ডাটা টা backend থেকে অবজেক্ট আকারে আসতেছে সেটাকে আমাদের human readable ফরম্যাটে আনতে চাই, নিচের মত করে করতে পারবো।

<h1>{{ birthday | date:"D d M Y" }}</h1>

output : 
Thu 23 Nov 2023

Example 3: যদি আমি চেক করতে চাই যে lst এর লেন্থ তাইলে নিচের মত করে করতে পারি

<h1>{{ lst | length }}</h1>

output : 
3

Example 4: আবার তুমি যদি চাও যে একটা বড় সেন্টেন্স এর দুইটা ওয়ার্ড দেখাবা বাকি গুলাতে জাস্ট … থাকবে তাইলে এভাবে করতে পারো

<h1>{{'Happy coding. Python is fun.' | truncatewords:2}}</h1>

output : 
Happy coding. …

Example 5: যদি তুমি কোনো স্ট্রিং এর মাঝের স্পেস গুলা রিমুভ করতে চাও তাইলে নিচের মত করে করতে পারো

<h1>{{"Python is Fun" | cut:" "}}</h1>

output : 
PythonisFun

টেমপ্লেট ফিল্টারিং নিয়ে বিস্তারিত জানতে নিচের ব্লগ দুইটা ফলো করতে পারো।

Last updated