> For the complete documentation index, see [llms.txt](https://django.howtocode.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://django.howtocode.dev/introduction_to_mtv.md).

# এমটিভি প্যাটার্ন পরিচিতি

এম,টি,ভি (MTV) এর পূর্নরূপ হল মডেল, টেমপ্লেট, ভিউ (Model, Template, View)। এটা একটা ডেভলপমেন্ট ডিজাইন প্যাটার্ন। প্রোজেক্ট যখন আস্তে আস্তে বড় হয়ে যায়, অনেক অনেক কোড লেখা হয়, তখন সেগুলো মেইনটেন করতে ডেভেলপারের হিমশিম খেতে হয়। এছাড়াও একটা প্রোজেক্টে অনেক ধরনের টিম কাজ করে, ফ্রন্টএন্ড, ব্যাকএন্ড, ডাটাবেইজ ইত্যাদি ক্ষেত্রে আলাদা আলাদা টিম কাজ করে, তো একটা প্রোজেক্টে এত টিম বা ডেভেলপার কাজ করলে তাদের মধ্যে বিভিন্ন কনফিউশন তৈরি হয়! কার কোড কেমন হবে, একজনের কোডের কারনে অন্যের কোডে কোন সমস্যা হবে কিনা ইত্যাদি বিষয় নিয়ে সমস্যা তৈরি হয়।

এধরনের সমস্যার সমাধান হল এই ডেভলপমেন্ট ডিজাইন প্যাটার্ন! এটা প্রোজেক্টকে সুন্দর ভাবে অর্গানাইজ করে রাখে, তাই প্রোজেক্ট বড় হলেও সেটা মেইনটেন করতে সমস্যা হয়না। এবং কোডগুলোও বিভিন্ন ভাগে বিভক্ত থাকে, তাই একেক টিম/ডেভেলপার কোডের একেকটা পার্ট নিয়ে নিশ্চিন্তে কাজ করতে পারে, অন্যের কোডের কোন ধরনের সমস্যা করা ছাড়াই! একারনেই প্রায় সকল ধরনের সফটওয়ার বা ওয়েবএপ ডিজাইন প্যাটার্ন ফলো করেই তৈরি করা হয়!

বিভিন্ন ধরনের ডেভেলপমেন্ট ডিজাইন প্যাটার্ন রয়েছে, জ্যাঙ্গো ওয়েবফ্রেমওয়ার্ক যে ডিজাইন ফলো করে সেটার নাম হল এমটিভি প্যাটার্ন, অর্থাৎ মডেল, টেমপ্লেট, ভিউ প্যাটার্ন! নাম শুনেই বোঝা যাচ্ছে, এই প্যাটার্নের মূল পার্ট তিনটিঃ

১) মডেল (Model), আপনার প্রোজেক্ট অবশ্যই ডাটাবেইজ ব্যবহার করবে এবং আপনার সাইটের সব কনটেন্ট ডাটাবেইজে সেভ থাকবে। ডাটাবেইজের ডিজাইন, ডাটাবেইজের সঙ্গে আপনার সকল ধরনের যোগাযোগ, ডাটা বেইজের সকল অপারেশন গুলো মডেল হিসেবে লেখা হয়! অর্থাৎ আপনার সরাসরি ডাটাবেইজ ব্যবহার করার দরকার হবেনা, বরং মডেল ব্যবহার করেই ডাটাবেইজের কাজগুলো করতে হবে। মডেল ডাটাবেইজের উপর একটা লেয়ার হিসেবে থাকে, আপনি একটা ডাটা মডেল তৈরি করে সেটা যেকোন ডাটাবেইজের জন্য ব্যবহার করতে পারবেন। মডেল এর এই ব্যবহার খুবই সহজ করে দেয় জ্যাঙ্গোর ওআরএম! এ নিয়ে আমরা পরে আরো বিস্তারিত জানব।

২) টেমপ্লেট (Template), ফ্রন্টএন্ড এর কোডগুলো, যা ইউজার বা ভিউয়ার এর সামনে প্রদর্শিত হবে সে সকল কোড এই ট্যামপ্লেট পার্টে থাকবে। সাধারনত এইচটিএমএল, সিএসএস বা অন্যান্য স্ট্যাটিক ফাইলগুলোই ট্যামপ্লেট এর মাধ্যমে প্রদর্শিত হয়।

৩) ভিউ (View), অত্যন্ত গুরুত্বপূর্ণ পার্ট, ক্লায়েন্ট বা ইউজার কোন ইউআরএল এ রিকুয়েস্ট করলে তাকে কোন জিনিস দেখানো হবে বা দেখানো হবেনা সেটা ঠিক করা ভিউ এর কাজ। ভিউ ক্লায়েন্টের রিকুয়েস্ট পর্যবেক্ষন করে মডেল থেকে প্রয়োজন অনুযায়ী ডাটা নিয়ে সেটা ট্যামপ্লেট এর মাধ্যমে সাজিয়ে ইউজারের কাছে পাঠিয়ে দেয়া। অর্থাৎ ক্লায়েন্ট, মডেল ও টেমপ্লেট এর মধ্যকার যোগাযোগ এবং ক্লায়েন্টকে তার আকাঙ্ক্ষিত বস্তু ঠিকমত প্রদর্শন করার ব্যবস্থা করা হল ভিউ এর দায়িত্ব!

> ভিউ ঠিক করে দেয় ব্যবহারকারী কোন জিনিসটা দেখবে! আর টেমপ্লেট ঠিক করে দেয় ভিউ এর ঠিক করা জিনিসটা ইউজারের সামনে কিভাবে (কোন ডিজাইনে) প্রদর্শিত হবে!

আস্তে আস্তে এমটিভি প্যাটার্ন বিষয়টা আরো ক্লিয়ার হয়ে যাবে, এখনই খুব বেশি মাথা ঘামানোর দরকার নেই।
