Django তে Template হল HTML ফাইল, যেখানে আপনি ডাইনামিক কন্টেন্ট যুক্ত করতে পারেন। Template ব্যবহারের মাধ্যমে আপনি ওয়েব পেজে ডেটা রেন্ডারিং করতে পারেন। Django Template Language (DTL) ব্যবহার করে আপনি Python কোডের মতো লজিক যোগ করতে পারেন, যেমন কন্ডিশনাল লজিক, লুপ, ফিল্টার ইত্যাদি। Template Django অ্যাপ্লিকেশনটির ভিউ (views) ফাংশন এবং ফ্রন্ট-এন্ড মধ্যে সংযোগ স্থাপন করে।
Template তৈরি করার প্রক্রিয়া
১. Template ডিরেক্টরি তৈরি করা
Django তে Template ফাইলগুলি সাধারণত একটি templates/ ডিরেক্টরির মধ্যে রাখা হয়। তবে, আপনি নিজেও অন্য কোনো ডিরেক্টরি তৈরি করতে পারেন, যেখানে আপনার সকল Template ফাইল থাকবে।
আপনার Django অ্যাপ্লিকেশন ফোল্ডারের মধ্যে
templatesনামের একটি নতুন ফোল্ডার তৈরি করুন:myapp/ templates/ myapp/ home.html about.htmlএখানে
myapp/হলো আপনার Django অ্যাপ্লিকেশনের নাম এবং এর মধ্যে রাখা HTML ফাইলগুলি আপনার টেমপ্লেট হবে।
২. settings.py এ TEMPLATE_DIRS কনফিগার করা
Django সেটিংস ফাইলে TEMPLATES সেটিংস ট্যাগের মধ্যে DIRS অ্যাট্রিবিউটে আপনি Template ফোল্ডারের লোকেশন উল্লেখ করতে পারেন, যেন Django আপনার Templates সঠিকভাবে খুঁজে পায়।
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
BASE_DIR / 'templates', # Project level template directory
],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
এখানে DIRS অংশে BASE_DIR / 'templates' দেয়া হয়েছে, যা আপনার টেমপ্লেট ফোল্ডারের লোকেশন।
৩. Template ফাইল তৈরি করা
Django টেমপ্লেটে আপনি সাধারণ HTML কোডের সাথে Django Template Language (DTL) ব্যবহার করে ডাইনামিক কন্টেন্ট যোগ করতে পারেন।
<!-- home.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Home Page</title>
</head>
<body>
<h1>Welcome to {{ site_name }}</h1>
<p>This is the home page of {{ user_name }}'s website.</p>
</body>
</html>
এখানে:
{{ site_name }}এবং{{ user_name }}হল Django template variables, যেগুলি ভিউ (views) ফাংশন থেকে পাঠানো হবে।
৪. View ফাংশনে Template রেন্ডার করা
ভিউ ফাংশনে আপনার টেমপ্লেট রেন্ডার করার জন্য render() ফাংশন ব্যবহার করতে হবে। এর মাধ্যমে আপনি টেমপ্লেটে ডেটা পাঠাতে পারেন।
from django.shortcuts import render
def home_view(request):
context = {
'site_name': 'My Awesome Website',
'user_name': 'John Doe'
}
return render(request, 'myapp/home.html', context)
এখানে:
request: HTTP অনুরোধ অবজেক্ট।'myapp/home.html': টেমপ্লেট ফাইলের পাথ।context: ডেটা বা ভেরিয়েবল যা টেমপ্লেটের মধ্যে পাঠানো হবে।
৫. URL এ Template যুক্ত করা
ভিউ ফাংশনটি আপনার urls.py ফাইলে রাউট করুন যাতে এটি সঠিক URL এর মাধ্যমে অ্যাক্সেস করা যায়।
from django.urls import path
from . import views
urlpatterns = [
path('', views.home_view, name='home'), # Home page URL
]
৬. Template ফিল্টার এবং লজিক ব্যবহার করা
Django টেমপ্লেটে আপনি ডাইনামিক কন্টেন্ট প্রদর্শন করতে বিভিন্ন ফিল্টার, লজিক, লুপ এবং কন্ডিশন ব্যবহার করতে পারেন।
ফিল্টার: ডেটা প্রক্রিয়া করার জন্য টেমপ্লেট ফিল্টার ব্যবহার করা হয়।
{{ user_name|lower }} <!-- Converts 'John Doe' to 'john doe' -->
লুপ: তালিকা বা অ্যারে আইটেমগুলোকে লুপের মাধ্যমে প্রদর্শন করা যায়।
<ul>
{% for item in item_list %}
<li>{{ item }}</li>
{% endfor %}
</ul>
কন্ডিশন: কন্ডিশনাল লজিকের মাধ্যমে ডেটা শো করা যায়।
{% if user_name %}
<p>Hello, {{ user_name }}!</p>
{% else %}
<p>Hello, Guest!</p>
{% endif %}
৭. Static ফাইল ব্যবহার করা
স্ট্যাটিক ফাইল (যেমন CSS, JavaScript) টেমপ্লেটের মধ্যে ব্যবহার করতে, আপনাকে {% load static %} ট্যাগ ব্যবহার করতে হবে।
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ site_name }}</title>
<link rel="stylesheet" type="text/css" href="{% static 'css/style.css' %}">
</head>
<body>
<h1>Welcome to {{ site_name }}</h1>
</body>
</html>
এখানে, {% static 'css/style.css' %} ব্যবহার করে CSS ফাইলটি লোড করা হয়েছে, যা Django এর স্ট্যাটিক ফোল্ডারে থাকতে হবে।
সারাংশ
Django তে Template তৈরি এবং ব্যবহারের মাধ্যমে আপনি HTML ফাইলের মধ্যে ডাইনামিক কন্টেন্ট যুক্ত করতে পারেন। Django Template Language (DTL) ব্যবহার করে আপনি ভেরিয়েবল, লজিক, লুপ এবং ফিল্টার ব্যবহার করতে পারবেন। ভিউ ফাংশন থেকে ডেটা টেমপ্লেটে পাঠানো হয় এবং টেমপ্লেটে তা রেন্ডার হয়। এছাড়া, স্ট্যাটিক ফাইল ব্যবহারের জন্য static ট্যাগ ব্যবহার করা হয়।
Read more