# এডমিন পরিচিতি

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

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

তো প্রায় প্রতিটি ওয়েবসাইটের বাইরের রূপ (যেটা সাধারন ভিজিটর দেখতে পারে) এর সাথে একটা ভিতরের রূপ (যেটা শুধু এডমিনের জন্য) থাকে। ডেভেলপার হিসেবে আপনাকে এই দুটি রূপই ডেভলপ বা ডিজাইন করতে হবে!

জ্যাঙ্গো আপনার এই কষ্ট অর্ধেক কমিয়ে দেয় তার এডমিন অ্যাপ এর মাধ্যমে! আপনি যেকোন সাইটই তৈরি করেননা কেন, সেটার জন্য রেডিমেড একটা এডমিন প্যানেল পেয়ে যাবেন। সব কিছু বিল্টইন সেট করাই থাকবে, আপনার কাজ হল সেটাকে নিজের মত করে কাস্টোমাইজ করে নেয়া!

জ্যাঙ্গো এডমিন ব্যবহার করতে প্রথমে প্রজেক্ট ডিরেকটরিতে টার্মিনাল ওপেন করে ভার্চুয়াল এনভায়র্নমেন্ট একটিভ করুন, তারপর `python manage.py runserver` কমান্ড দিয়ে জ্যাঙ্গো ডেভলপমেন্ট সার্ভার চালু করুন।

ব্রাউজার ওপেন করে এই ঠিকানায় যান <http://127.0.0.1:8000/admin>

লগিন করার একটা অপশন দেখতে পাবেনঃ

![](https://i.imgur.com/dbMRKf0.png)

জ্যাঙ্গো এডমিন প্যানেল আশা করে যে এডমিন (জ্যাঙ্গোর পরিভাষায় বলে সুপার ইউজার) তার ইউজারনেম এবং পাসওয়ার্ড দিয়ে লগিন করবে। কিন্তু আপনার কাছে তো ইউজারনেম/পাসওয়ার্ড নেই!!

সমস্যা নেই, আমরা ইউজারনেম/পাসওয়ার্ড বানিয়ে নিব, প্রথমে কমান্ড প্রম্পট (টার্মিনাল) এ যান। সেখানে দেখবেন এখনো সার্ভার চালু করা। কন্ট্রোল সি (Ctrl + c ) বাটন দুটি চেপে সার্ভার বন্ধ করুন! এরপর সুপার ইউজার তৈরি করার নিচের কমান্ডটি দিনঃ

```
python manage.py createsuperuser
```

আপনার ইউজারনেম, ইমেইল এবং পাসওয়ার্ড চাইবে সেগুলো দিন। সঠিক ভাবে সব কিছু দিলে সেখানে সুপার ইউজার তৈরি হয়েছে বলে একটা মেসেজ শো করবে।

> লক্ষ্য করুন, পাসওয়ার্ড কিন্তু দুইবার দিতে হবে, পাসওয়ার্ড কমান্ডপ্রম্পট বা টার্মিনালে শো করবেনা তাই পাসওয়ার্ড টাইপ করার সময় সেটা স্ক্রিনে না দেখে ঘাবড়াবেন না! পাসওয়ার্ড স্ট্রং এবং লম্বাচওড়া হতে হবে, ১২৩৪৫ টাইপের পাসওয়ার্ড দিলে কাজ হবেনা!

এখন আবার ডেভেলপমেন্ট সার্ভার চালু করুন ( `python manage.py runserver` কমান্ড দিয়ে) ! এবং ব্রাউজারের এডমিন প্যানেলের ঠিকানায় (<http://127.0.0.1:8000/admin>) যেয়ে একটু আগে তৈরি করা সুপার ইউজারের ইউজারনেম/পাসওয়ার্ড দিয়ে লগিন করুন!

লগিন করলে আপনি এরকম একটা কিছু দেখতে পারবেনঃ

![](https://i.imgur.com/x2elHaL.png)

আপাতত সবকিছু বুঝে ফেলার দরকার নেই, পেইজটা ভালো করে দেখুন, উপরের ডান পাশের মেনুটা দেখুন, লগআউট, পাসওয়ার্ড চেঞ্জ, ভিউ সাইট! নাম দেখেই বোঝা যাচ্ছে কোন টা কি কাজের! যেটা বোঝা যাচ্ছেনা সেটা হল মাঝের অংশটা। Site administration লেখার নিচে Grups, Usres লেখাগুলো আসলে ‘মডেল’! মডেল চিনেনতো !? এ দুটি মডেল হল জ্যাঙ্গোর অথেনটিকেশন এবং অথারাইজেশন অ্যাপ এর মডেল।

আমাদের তৈরি করা অ্যাপ এবং সেটার মডেল এখানে দেখা যাচ্ছেনা, কারন এটা অটোমেটিক ভাবে দেখা যায়না বরং এডমিনে মডেল এড করে নিতে হবে।

আমাদের myapp অ্যাপ এর ভিতর দেখবেন admin.py নামে একটা মডিউল আছে, সেটা ওপেন করুন! ভিতরে এরকম কোড দেখা যাবেঃ

```
from django.contrib import admin

# Register your models here.
```

আপনি সেখানে আপনার আপনার মডেল ক্লাসটি ইম্পোর্ট করুন, অতপর সেটা রেজিস্টার করুন। আপনার admin.py এর সম্পুর্ন কোড এরকম হবেঃ

```
from django.contrib import admin

# Register your models here.
from myapp.models import Message # মডেল ইম্পোর্ট করা হল

admin.site.register(Message) # মডেলকে এডমিন সাইটে রেজিস্টার করা হল
```

এখন আবার ব্রাউজারে এডমিন প্যানেলে যান, এরকম দেখা যাবেঃ

![](https://i.imgur.com/ltYreqA.png)

আমাদের এপটি এখন এডমিন প্যানেলে দেখা যাচ্ছে, লক্ষ্য করুন, এপ এর নামটি বড় হাতের অক্ষরে লেখা MYAPP এবং তার নিচে সেই এপ এর Message মডেলটির নাম দেখা যাচ্ছে, তার পাশে Add এবং Change নামে দুটি বাটন দেখা যাচ্ছে!

এখন আপনি যদি Message লেখাটিতে ক্লিক করেন তাহলে মেসেজ মডেলের অবজেক্টগুলো দেখতে পাবেনঃ

![](https://i.imgur.com/v2RKvoZ.png)

আমাদের তৈরি তিনটি অবজেক্ট (জ্যাঙ্গো শেলে তৈরি করেছিলাম! মনে আছে?) সুন্দর ভাবে দেখা যাচ্ছে। এখন এই অবজেক্টগুলোর উপর ক্লিক করে আমরা কিন্তু এগুলো আমাদের মন মত এডিট করতে পারি, আবার ডিলেটও করতে পারি।

প্রথম থাকা অবজেক্ট অর্থাৎ ‘Are you Crazy !’ মেসেজটায় ক্লিক করে ভিতরে প্রবেশ করুন, এরকম একটা এইচটিএমএল টেক্সট এরিয়া দেখতে পাবেন, যেখানে মেসেজটি এডিট করা যাবেঃ

![](https://i.imgur.com/ryIXkpq.png)

এটাকে এডিট করে যদি আমরা ‘Hey! Are you Crazy !’ করে সেভ বাটনে ক্লিক করিঃ

![](https://i.imgur.com/o0XrKwk.png)

তাহলে আমাদের সেই মেসেজটি পরিবর্তন হয়ে যাবে! এভাবে আমরা প্রতিটা অবজেক্টই এডিট করতে পারি।

![](https://i.imgur.com/kWRBSan.png)

এডমিন প্যানেলের মাধ্যমে আমরা যেকোনো অবজেক্টকেই (উপরের উদাহরনের অবজেক্টে শুধু টেক্সট ছিল, কিন্তু আমরা আরো কমপ্লেক্স কোনো অবজেক্টকেও) ক্রিয়েট/রিড/আপডেট/ডিলেট করতে পারব!

আপনার কাজ হল এডমিন প্যানেলটা আরো ভালো করে ঘুরে দেখা, এই চ্যাপ্টারে আমরা শুধু অবজেক্ট রিড এবং আপডেট করা দেখেছি। আপনি নিজেই চেষ্টা করুন কিভাবে এডমিন প্যানেলের মাধ্যমে নতুন অবজেক্ট/ডাটা (আমাদের এপ এর ক্ষেত্রে ‘মেসেজ’) তৈরি করা যায়! এবং কিভাবে কোন অবজেক্ট/ডাটা ডিলেট করা যায়।

> মনে রাখবেনঃ জ্যাঙ্গো ওআরএম এ প্রতিটা মডেল হল ডাটাবেইজের একেকটা টেবিল, মডেলের ফিল্ডগুলো হল ডাটাবেইজের টেবিলের কলাম, মডেলের প্রতিটা ইন্সট্যান্স (মডেল থেকে তৈরি করা প্রতিটা অবজেক্ট) হল টেবিলের ফিল্ড বা ডাটা বা ‘রো’ !


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://django.howtocode.dev/introduction_to_admin.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
