{% extends %} ট্যাগ
মনে করেন আপনার তিনটি ওয়েবপেজ আছে এবং তিনটি পেজেই নেভিগেশন মেনু রয়েছে এখন আপনি কি তিনটা পেজেই একই কোড লিখবেন তাহলে কোডটি বড়ো হয়ে গেলো না আর যদি কখনো নেভিগেশন মেনুতে কোন লিংক যোগ করেন তাহলে সব গুলো পেজ এ গিয়ে আপডেট কোনো হবে। কেমন হতো যদি একটি ফাইলে রেখে সেটা সব ফাইলে include করা যেত। তাহলে চলুন।
মনে করেন আপনার ওয়েবপেজের কাঠামো সব একই কিন্তু কিছু কিছু পেজ এর কয়েক জায়গায় মাঝে মাঝে পরিবর্তন হবে। আরো সহজ ভাবে বললে হোম পেজ এ একটি মেনু আছে ফুটার আছে মাঝে হোম পেজে দুইটা কন্টেন্টের জায়গা আছে আর আরেকটি পেজের লেআউট একই কিন্তু একটি কনটেন্ট হবে এখন কি আমরা দুইটি পেজ ডিজাইন করবো। না আমরা প্রথম পেজকে আমাদের প্রধান লেআউট বানাবো এবং পরে এটাকে ব্যবহার করবো এবং যেখানে পরিবর্তন করবো ওখানে কনটেন্ট আলাদা করবো। চলুন প্রাকটিক্যাল দেখি।
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>My App</title>
</head>
<body>
<header>
<h1>My App</h1>
</header>
<main>
{% block content %}
{% endblock %}
</main>
<footer>
<p>Copyright © 2023</p>
</footer>
</body>
</html>
এই টেমপ্লেটটিতে একটি content নামের ভিত্তি ব্লকটি রয়েছে। এই ভিত্তি ব্লকটি প্রতিটি পৃষ্ঠার জন্য আলাদা সামগ্রী প্রদর্শন করতে ব্যবহৃত হবে।
এখন, আপনি আপনার অ্যাপের প্রতিটি পৃষ্ঠার জন্য একটি পৃথক টেমপ্লেট তৈরি করতে পারেন। এই টেমপ্লেটগুলি base.html টেমপ্লেট থেকে বর্ধিত হবে:
{% extends 'base.html' %}
{% block content %}
<h1>This is the home page</h1>
{% endblock %}
{% include %} Tags
মনে করেন আপনার তিনটি ওয়েবপেজ আছে এবং তিনটি পেজেই নেভিগেশন মেনু রয়েছে এখন আপনি কি তিনটা পেজেই একই কোড লিখবেন তাহলে কোডটি বড়ো হয়ে গেলো না আর যদি কখনো নেভিগেশন মেনুতে কোন লিংক যোগ করেন তাহলে সব গুলো পেজ এ গিয়ে আপডেট কোনো হবে। কেমন হতো যদি একটি ফাইলে রেখে সেটা সব ফাইলে include করা যেত। তাহলে চলুন।
{% extends 'base.html' %}
{% block content %}
{% include 'partials/header.html' %}
<h1>My Page</h1>
{% include 'partials/footer.html' %}
{% endblock %}
{% static %} tags
{% static %} : এই ট্যাগটি একটি স্ট্যাটিক ফাইলের URL তৈরি করে। আপনি এটিকে একটি স্ট্যাটিক ফাইলের নাম দিয়ে ব্যবহার করতে পারেন।
<img src="{% static 'images/logo.png' %}" alt="Logo">{% for %} tags
from django.shortcuts import render
from .models import Student
def student_list(request):
students = Student.objects.all()
context = {
'students': students
}
return render(request, 'student_list.html', context)
{% extends 'base.html' %}
{% block content %}
<h1>List of Students</h1>
<ul>
{% for student in students %}
<li>{{ student.name }} - {{ student.email }} - {{ student.phone_number }}</li>
{% endfor %}
</ul>
{% endblock %}{% filter %} tags
{% filter %} ট্যাগটি একটি টেক্সট স্ট্রিংকে ফিল্টার করতে ব্যবহৃত হয়। এটি আপনাকে একটি টেক্সট স্ট্রিংকে বিভিন্ন উপায়ে পরিবর্তন করতে দেয়।
এখানে একটি উদাহরণ রয়েছে কিভাবে {% filter %} ট্যাগটি ব্যবহার করে একটি টেক্সট স্ট্রিংকে কেবলমাত্র বড় হাতের অক্ষরে রূপান্তর করতে হয়:
<h1>{{ title|filter('upper') }}</h1>এখানে আরেকটি উদাহরণ রয়েছে কিভাবে {% filter %} ট্যাগটি ব্যবহার করে একটি টেক্সট স্ট্রিংকে HTML এস্কেপ করতে হয়:
<p>{{ text|filter('escape') }}</p>
<p>{{ text|safe }}</p> # same
এখানে কিছু সাধারণ {% filter %} ট্যাগ রয়েছে:
upper: টেক্সট স্ট্রিংকে কেবলমাত্র বড় হাতের অক্ষরে রূপান্তর করে।lower: টেক্সট স্ট্রিংকে কেবলমাত্র ছোট হাতের অক্ষরে রূপান্তর করে।capitalize: টেক্সট স্ট্রিংয়ের প্রথম অক্ষরকে বড় হাতের অক্ষরে রূপান্তর করে।escape: টেক্সট স্ট্রিংকে HTML এস্কেপ করে।truncatewords: টেক্সট স্ট্রিংকে নির্দিষ্ট সংখ্যক শব্দে ছেঁটে দেয়।slice: টেক্সট স্ট্রিং থেকে নির্দিষ্ট অংশটি কেটে দেয়।replace: টেক্সট স্ট্রিং থেকে একটি নির্দিষ্ট অক্ষর বা শব্দকে অন্য অক্ষর বা শব্দ দিয়ে প্রতিস্থাপন করে।
{% if %} tags
{% if user.is_authenticated %}
<p>You are logged in.</p>
{% else %}
<p>You are not logged in.</p>
{% endif %}
{% pluralize %} tags
এখানে একটি উদাহরণ রয়েছে কিভাবে {% pluralize %} ট্যাগটি ব্যবহার করে একটি সংখ্যাকে বহুবচনে রূপান্তর করতে হয়:
{% pluralize 1 "apple" %}এই কোডটি “1 apple” কে “1 apples” তে রূপান্তর করবে।
এখানে আরেকটি উদাহরণ রয়েছে কিভাবে {% pluralize %} ট্যাগটি ব্যবহার করে একটি সংখ্যাকে বহুবচনে রূপান্তর করতে হয়:
{% pluralize 2 "cat" "cats" %}এই কোডটি “2 cat” কে “2 cats” তে রূপান্তর করবে।
{% pluralize %} ট্যাগটি খুবই দরকারী কারণ এটি আপনাকে আপনার টেমপ্লেটগুলিতে বহুবচন সূচকগুলি স্বয়ংক্রিয়ভাবে তৈরি করতে দেয়। এটি আপনাকে আপনার টেমপ্লেটগুলিকে আরও সুবিধাজনক এবং রক্ষণাবেক্ষণযোগ্য করে তুলতে দেয়।
{% url %} tags
হ্যাঁ, {% url %} ট্যাগটি একটি URL তৈরি করে। এটি আপনাকে একটি মডেল অবজেক্ট, একটি ফাংশন, বা একটি নির্দিষ্ট URL প্যাটার্ন দিয়ে একটি URL তৈরি করতে দেয়।
{% url %} ট্যাগটির সিনট্যাক্স নিম্নরূপ:
{% url view_name [args] [kwargs] %}view_name হল URL প্যাটার্নটির নাম। যা আমরা urls pattern এ path() মেথডে name হিসাবে সেট করেছিলাম।
view_name এবং args কেবলমাত্র একটি শব্দ বা একটি অক্ষর ক্রম হতে পারে। kwargs একটি কী-মান জোড়ার একটি ডিকশনারি হতে পারে।
{% url %} ট্যাগটি একটি str অবজেক্ট ফেরত দেয় যা URL এর মান।
এখানে একটি উদাহরণ রয়েছে কিভাবে {% url %} ট্যাগটি ব্যবহার করে একটি URL তৈরি করতে হয়:
{% url 'product_detail' product.id %}এই কোডটি product_detail URL প্যাটার্নটি ব্যবহার করে একটি URL তৈরি করবে। args প্যারামিটারটি product.id মডেল অবজেক্টের ID মান ব্যবহার করবে।
এখানে আরেকটি উদাহরণ রয়েছে কিভাবে {% url %} ট্যাগটি ব্যবহার করে একটি URL তৈরি করতে হয়:
{% url 'my_view' %}
এই কোডটি my_view নামক একটি URL প্যাটার্নটি ব্যবহার করে একটি URL তৈরি করবে। args এবং kwargs প্যারামিটারগুলি খালি থাকবে।
{% url %} ট্যাগটি খুবই দরকারী কারণ এটি আপনাকে আপনার টেমপ্লেটগুলিতে URL তৈরি করতে দেয়। এটি আপনাকে আপনার URL প্যাটার্নগুলিকে আপনার টেমপ্লেটগুলি থেকে আলাদা করতে দেয়, যা আপনার কোডকে আরও সুবিধাজনক এবং রক্ষণাবেক্ষণযোগ্য করে তোলে।
{% trans %} tags
{% trans %} ট্যাগটি একটি অনুবাদিত টেক্সট স্ট্রিং প্রদর্শন করতে ব্যবহৃত হয়। এটি একটি অনুবাদ ID এবং একটি বিকল্প অনুবাদ মান গ্রহণ করে।
{% trans %} ট্যাগটির সিনট্যাক্স নিম্নরূপ:
{% trans translation_id [translation_value] %}
যদি translation_value প্যারামিটারটি প্রদান করা না হয়, তাহলে Django অনুবাদ ফাইলগুলিতে সংজ্ঞায়িত অনুবাদ মান ব্যবহার করবে।
এখানে একটি উদাহরণ রয়েছে কিভাবে {% trans %} ট্যাগটি ব্যবহার করে একটি অনুবাদিত টেক্সট স্ট্রিং প্রদর্শন করতে হয়:
{% trans 'hello' %}এই কোডটি “hello” অনুবাদ ID এর জন্য অনুবাদ ফাইলগুলিতে সংজ্ঞায়িত অনুবাদ মান প্রদর্শন করবে।
এখানে আরেকটি উদাহরণ রয়েছে কিভাবে {% trans %} ট্যাগটি ব্যবহার করে একটি অনুবাদিত টেক্সট স্ট্রিং প্রদর্শন করতে হয়:
{% trans 'hello' 'Hi there!' %}এই কোডটি “hello” অনুবাদ ID এর জন্য “Hi there!” অনুবাদ মান প্রদর্শন করবে।
সামনে কোন এক টিউটোরিয়ালে কিভাবে পতাকা ধরে ট্রান্সলেট করতে হয় Django এপ্লিকেশন তা দেখানো হবে ইনশাল্লাহ।
{ % comment %} tags
এখানে একটি উদাহরণ রয়েছে কিভাবে {% comment %} ট্যাগটি ব্যবহার করে একটি মন্তব্য তৈরি করতে হয়:
{% comment %}
This is a comment.
{% endcomment %}
html কমেন্ট না করে Django টেম্পলেট tags এর কমেন্ট ব্যবহার করতে হয়