# দ্বিতীয় অধ্যায়

## জ্যাঙ্গো এ্যাডমিন - পরিচিতি

জ্যাঙ্গোর জনপ্রিয় ফিচারগুলোর মধ্যে এর এ্যাডমিন এ্যাপ্লিকেশনটি বেশ জনপ্রিয় । এই এ্যাপ্লিকেশনটি জ্যাঙ্গোর সাথেই আসে । এটি যেকোন সাইট এ্যাডমিনিস্ট্রেশন অনেক সহজ করে দেয় । তো আসলে এটা করে টা কি? এই এ্যাপটিকে আপনার মডেল গুলোর নাম জানিয়ে দিলে সে আপনার জন্য সকল ডাটা অপারেশন (CRUD == Create Read Update Delete) করার জন্য বেশ চমৎকার ইন্টারফেইস তৈরি করে দিবে তেমন কোন কোডিং ছাড়াই । আপনি সেই ইন্টারফেইস ব্যবহার করে ডাটাবেইজে নতুন ডাটা ইনপুট করতে পারবেন, পুরাতন ডাটা দেখা, পরিবর্তন করা কিংবা মুছে ফেলতেও পারবেন বেশ সহজে । কষ্ট করে আর এ্যাডমিন প্যানেল বানানোর প্রয়োজন নেই ।

## এ্যাডমিন এ্যাপ্লিকেশন চালু করা

জ্যাঙ্গো এ্যাডমিন এ্যাপ্লিকেশনটি পাওয়া যাবে `django.contrib.admin` প্যাকেজে । তাই আমাদেরকে `settings.py` এর `INSTALLED_APPS` সেকশনটিতে এই এ্যাপ্লিকেশন টি যোগ করে নিতে হবে । এই কাজটি কিভাবে করতে হবে তার উদাহরণ আমরা প্রথম অধ্যায়ে দেখেছি ।

এ্যাডমিন এ্যাপ্লিকেশনটি তার ব্যবহারের জন্য বেশ কিছু ডাটা মডেল সরবরাহ করে । তাই এ্যাপ্লিকেশনটি ব্যবহার করার আগে আমাদের `syncdb` কমান্ডটিও চালানো প্রয়োজন হবে -

```
python manage.py syncdb
```

এই প্রসেসের শেষে একটি সুপার ইউজার তৈরি করার প্রম্পট পাওয়া যাবে । এ ব্যাপারে আগের অধ্যায়ে আলোচনা করা হয়েছে । এই কমান্ড চালানোর ফলে জ্যাঙ্গো এ্যাডমিন এ্যাপের জন্য প্রয়োজনীয় সব টেবিল তৈরি করে নিবে ।

এবার আমাদেরকে বলে দিতে হবে কোন URL ভিজিট করলে এ্যাডমিন এ্যাপটি পাওয়া যাবে । জ্যাঙ্গোর এই ডেফিনিশনগুলো থাকে `mysite/urls.py` ফাইলে ।

আমরা ফাইলটি এডিট করে এরকম রুপ দেই -

```
from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
)
```

জ্যাঙ্গোর `urls.py` তে মূলত একটি ভ্যারিয়েবল থাকে `urlpatterns` নামে যেটিতে আমরা সব URL এর জন্য ডেফিনিশন প্রদান করি । এটি কিভাবে কাজ করে তা আমরা জ্যাঙ্গো এপিআই থেকে আরো বিস্তারিত দেখে নিবো পরবর্তীতে কোন এক সময় ।

আমরা আপাতত এই `urlpatterns` এ আমাদের ডেফিনিশন যোগ করে দিলাম ।

```
url(r'^admin/', include(admin.site.urls))
```

এটির মানে হলো যদি রিকুয়েস্ট করা URL এর প্রথমে `admin` থাকে তবে যেন জ্যাঙ্গো `admin.site.urls` থেকে ডেফিনিশন ইম্পোর্ট করে নেয় । `include` ব্যবহার করে আমরা আমাদের `urlpatterns` এর মধ্যে প্রয়োজনীয় url ইম্পোর্ট করে নিতে পারি সহজেই!

## চালু করি ডেভ সার্ভার

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

```
python manage.py runserver
```

**পুনশ্চ:** এই কমান্ডটি জ্যাঙ্গো এ্যাপ্লিকেশন ডেভেলপমেন্টে বোধহয় সবচাইতে বেশী ব্যবহৃত কমান্ড । তাই এটি আত্মস্থ করা অতীব জরুরী ।

ডেভ সার্ভার রান করলে এবার চটপট ব্রাউজারে এই URL টা আমরা ভিজিট করি -

```
http://127.0.0.1:8000/admin/
```

যদি আপনি সব কিছু ঠিক ঠাক মতো করে থাকেন তবে এরকম একটি ইন্টারফেইস পাবেন -

![django-admin](https://docs.djangoproject.com/en/1.5/_images/admin01.png)

আর যদি এরকম স্ক্রীন না এসে কোন ইরর মেসেজ দেখায় তবে ধাপগুলো আবার চেক করুন, খুজে বের করুন কোথায় ভুল হয়েছে ।

## এ্যাডমিন প্যানেলে লগিন করা

জ্যাঙ্গো এ্যাডমিন এ্যাপটি যোগ করে প্রথমবার `syncdb` রান করার পর একটি সুপার ইউজার তৈরি করেছিলাম আমরা । এ্যাডমিন প্যানেলে প্রবেশ করার জন্য সেই এ্যাকাউন্টটির ইউজারনেইম এবং পাসওয়ার্ড ব্যবহার করুন । যদি সেই সময় সুপার ইউজার তৈরি করা না হয়ে থাকে বা কোন কারণে নতুন আরেকটি এ্যাকাউন্ট প্রয়োজন হয় তবে নতুন সুপার ইউজার তৈরি করার জন্য এই কমান্ডটি রান করুন -

```
python manage.py createsuperuser
```

লগিন করার পর আমরা এরকম একটি স্ক্রীন দেকতে পাবো -

![django-admin-home](https://docs.djangoproject.com/en/1.5/_images/admin02t.png)

এখান থেকে আমরা বিভিন্ন এ্যাপ্লিকেশন এর মডেলগুলো এ্যাক্সেস করতে পারি । উদাহরণ স্বরুপ জ্যাঙ্গোর `Auth` এবং `Sites` এ্যাপ্লিকেশনের মডেলগুলো আমরা এই স্ক্রীনশটে দেখতে পারছি ।

## নিজেদের মডেল এ্যাডমিনে যোগ করা

এ্যাডমিন এ্যাপ্লিকেশন সংক্রান্ত সকল কোড রাখতে হবে আমাদের এ্যাপ্লিকেশন প্যাকেজের ভিতর `admin.py` নামক একটি ফাইলে । জ্যাঙ্গো এ্যাডমিন লোড হওয়ার সময় সকল ইনস্টল্ড এ্যাপ্লিকেশন এর ভিতর `admin.py` ফাইলগুলোকে রান করে । ফলে এই ফাইলে আমরা এ্যাডমিন এ্যাপ্লিকেশনকে বলে দিতে পারি আমরা এ্যাডমিন প্যানেলে আমাদের এ্যাপ্লিকেশন থেকে কি কি করতে দিতে চাই ।

আপাতত আমাদের চাওয়া খুব সিম্পল । আমাদের ভোটাভোটির জন্য `Poll` মডেলটি দরকার এ্যাডমিন ইন্টারফেইসে । তাই আমরা `polls/admin.py` ফাইলটি তৈরি করে সেখানে এই কোড ব্যবহার করবো -

```
from django.contrib import admin
from polls.models import Poll

admin.site.register(Poll) 
```

এই কোডে আসলে আমরা জ্যাঙ্গো এ্যাডমিনকে বলে দিচ্ছি আমাদের `Poll` মডেলটিকে এ্যাডমিন সাইটে রেজিস্টার করে নিতে । অর্থাৎ আমরা এ্যাডমিন এ্যাপকে বলে দিলাম আমাদের মডেলটির কথা যেন এ্যাডমিন এ্যাপ আমাদের সুযোগ করে দেয় সহজে এই মডেলটি ব্যবহার করার ।

ফাইলটি এ্যাড করার পর ব্রাউজারে আবার এ্যাডমিন সাইটে প্রবেশ করুন । এবার চিত্রটি হবে অনেকটা এরকম -

![django-admin-polls](https://docs.djangoproject.com/en/1.5/_images/admin03t.png)

`Polls` লিংক এ ক্লিক করলে এরকম একটি স্ক্রীন পাবেন -

![django-admin-polls-list](https://docs.djangoproject.com/en/1.5/_images/admin04t.png)

আমরা চাইলে আমাদের আগেই সেইভ করা এন্ট্রিটি পরিবর্তন করতে পারি -

![edit-poll](https://docs.djangoproject.com/en/1.5/_images/admin05t.png)

## জ্যাঙ্গো এ্যাডমিন - সারমর্ম

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