Django তে URL routing হল একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যার মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনটির URL এবং কন্ট্রোলার (views) এর মধ্যে সম্পর্ক স্থাপন করেন। এটি ডিফাইন করে কোন URL প্যাটার্নের জন্য কোন ভিউ ফাংশন বা ক্লাস কল হবে। Django-তে URL রাউটিং খুবই সহজ এবং ইউজার-ফ্রেন্ডলি।
Django তে URL Routing কনফিগারেশন প্রক্রিয়া
১. urls.py ফাইল এবং URLconf
Django-তে URL রাউটিং urls.py ফাইলের মাধ্যমে পরিচালিত হয়। এই ফাইলটি ডিফাইন করে, কোন URL প্যাটার্নের জন্য কোন ভিউ ফাংশন বা ভিউ ক্লাস কল হবে।
প্রতিটি Django অ্যাপ্লিকেশনে একটি urls.py ফাইল থাকে, যেখানে আপনি URL প্যাটার্ন ডিফাইন করেন। এছাড়া, প্রজেক্টের রুট ফোল্ডারে একটি urls.py ফাইল থাকে, যেখানে অ্যাপ্লিকেশনের urls.py ফাইলগুলোর মধ্যে রেফারেন্স তৈরি করা হয়।
Django প্রজেক্টের মূল urls.py কনফিগারেশন
আপনার প্রজেক্টের urls.py ফাইলে সাধারণত কিছু মৌলিক URL কনফিগারেশন থাকে:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls), # Django Admin panel
path('blog/', include('blog.urls')), # Blog অ্যাপের URL রাউটিং
]
path('admin/', admin.site.urls): Django Admin এর জন্য URL কনফিগারেশন।path('blog/', include('blog.urls')):blogঅ্যাপের জন্য URL রাউটিং, যেখানেblog.urlsফাইলের মধ্যে URL কনফিগারেশন থাকবে।
Django অ্যাপের urls.py কনফিগারেশন
প্রতিটি Django অ্যাপ্লিকেশনের মধ্যে একটি urls.py ফাইল থাকে, যেখানে এই অ্যাপের জন্য URL প্যাটার্নগুলো ডিফাইন করা হয়।
ধরি, একটি blog অ্যাপ তৈরি করা হয়েছে। তখন blog/urls.py ফাইলটি দেখতে কিছুটা এই রকম হবে:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'), # Blog হোমপেজ
path('post/<int:id>/', views.detail, name='detail'), # ব্লগ পোস্টের বিস্তারিত
]
এখানে:
path('', views.index, name='index'): এটিblogঅ্যাপের হোমপেজের জন্য রাউটিং। এটিviews.indexফাংশনকে কল করবে।path('post/<int:id>/', views.detail, name='detail'): এটি ব্লগ পোস্টের বিস্তারিত দেখানোর জন্য রাউটিং।<int:id>হল URL প্যারামিটার, যা পোস্টের আইডি গ্রহণ করবে এবংviews.detailফাংশনকে কল করবে।
URL প্যারামিটার ব্যবহার
Django তে URL প্যারামিটার ব্যবহার করা যায়, যা ভিউ ফাংশনের মাধ্যমে ডেটা পাস করতে সাহায্য করে। যেমন, উপরোক্ত উদাহরণে post/<int:id>/ URL প্যাটার্নটি একটি পূর্ণসংখ্যা id গ্রহণ করে। এই id প্যারামিটারটি views.detail ফাংশনে পাস করা হয়।
১. URL প্যারামিটার ডিফাইন করা
path('post/<int:id>/', views.detail, name='detail')
এখানে, <int:id> হলো একটি URL প্যারামিটার, যেখানে int টাইপ নির্দেশ করে যে, এটি একটি পূর্ণসংখ্যা হতে হবে।
২. ভিউ ফাংশনে প্যারামিটার গ্রহণ করা
from django.shortcuts import render
from .models import Post
def detail(request, id):
post = Post.objects.get(id=id)
return render(request, 'blog/detail.html', {'post': post})
এখানে:
idপ্যারামিটারটিviews.detailফাংশনে পাস করা হচ্ছে।Post.objects.get(id=id)ব্যবহার করে ব্লগ পোস্টটি ডাটাবেস থেকে পাওয়া হচ্ছে এবং তাdetail.htmlটেমপ্লেটে পাঠানো হচ্ছে।
URL রাউটিং এনক্যাপসুলেশন এবং ইনক্লুড
আপনি আপনার অ্যাপ্লিকেশনের URL কনফিগারেশন গুলোকে আরও সুসংগঠিত রাখতে include() ফাংশন ব্যবহার করতে পারেন। এই ফাংশনটি একটি অ্যাপ্লিকেশনের urls.py ফাইলকে প্রধান urls.py ফাইলে অন্তর্ভুক্ত (include) করার জন্য ব্যবহৃত হয়।
উদাহরণ:
প্রজেক্টের মূল urls.py ফাইলে অ্যাপ্লিকেশন URL কনফিগারেশন ইনক্লুড করার জন্য:
urlpatterns = [
path('admin/', admin.site.urls),
path('blog/', include('blog.urls')), # blog.urls ফাইল ইনক্লুড করা হচ্ছে
]
এটি blog অ্যাপের urls.py ফাইলের সমস্ত URL প্যাটার্নের জন্য রাউটিং করবে।
URL Namespaces ব্যবহার
Django তে namespaces ব্যবহারের মাধ্যমে আপনি একই নামে বিভিন্ন অ্যাপের URL গুলো আলাদা করে রেফারেন্স করতে পারেন। এটি বড় প্রোজেক্টের জন্য খুবই সহায়ক।
উদাহরণ:
urls.pyফাইলে namespace ডিফাইন করা:
urlpatterns = [
path('blog/', include('blog.urls', namespace='blog')),
]
- অ্যাপের
urls.pyফাইলে URL প্যাটার্নের নামকরণ:
urlpatterns = [
path('', views.index, name='index'),
path('post/<int:id>/', views.detail, name='detail'),
]
- ভিউ বা টেমপ্লেটে নাম ব্যবহার:
# in templates:
<a href="{% url 'blog:index' %}">Home</a>
<a href="{% url 'blog:detail' id=post.id %}">View Post</a>
এখানে, blog:index এবং blog:detail URL গুলোকে অ্যাপের namespace ব্যবহার করে রেফারেন্স করা হয়েছে।
Conclusion
Django তে URL routing কনফিগারেশন একটি অত্যন্ত শক্তিশালী এবং নমনীয় ব্যবস্থা। URL প্যাটার্ন এবং ভিউ ফাংশনগুলির মধ্যে সম্পর্ক স্থাপন করে আপনি সহজে ওয়েব পেজগুলোর মধ্যে নেভিগেশন কনফিগার করতে পারেন। URL প্যারামিটার, namespace, এবং include ফিচারগুলো ব্যবহার করে আপনি খুব সহজে এবং দক্ষতার সাথে একটি জটিল অ্যাপ্লিকেশন তৈরি করতে পারবেন।
Read more