12- فعال‌سازی پنل مدیریت (Admin)

۲۷ بهمن ۱۴۰۴
0 دیدگاه

گام هفتم: بازی با دیتابیس و فعال‌سازی پنل مدیریت (Admin)

در قسمت‌های قبل دیتابیس را ساختیم. حالا می‌خواهیم بدون نوشتن کدهای پیچیده و فقط با استفاده از خط فرمان، با دیتابیس بازی کنیم و اطلاعات وارد کنیم. بعد از آن هم سراغ پنل مدیریت آماده‌ی جنگو می‌رویم.

۱. ورود به آزمایشگاه جنگو (Python Shell)

جنگو یک محیط تعاملی (Shell) دارد که می‌توانید کدهای پایتون را خط به خط اجرا کنید و همان لحظه نتیجه را ببینید. برای ورود دستور زیر را بزنید:

Bash
python manage.py shell

حالا بیایید کمی با مدل‌هایی که ساختیم کار کنیم:

Python Shell
# اول مدل‌ها را ایمپورت می‌کنیم
>>> from polls.models import Question, Choice
>>> from django.utils import timezone

# لیست تمام سوالات را ببینیم (هنوز هیچی نیست)
>>> Question.objects.all()


# بیایید یک سوال جدید بسازیم
>>> q = Question(question_text="What's new?", pub_date=timezone.now())
>>> q.save()

# حالا سوال ما یک ID اختصاصی دارد
>>> q.id
1

# می‌توانیم به اطلاعاتش دسترسی داشته باشیم
>>> q.question_text
"What's new?"

یک مشکل کوچک و راه حل آن (متد __str__)

اگر دقت کنید، خروجی پیش‌فرض اصلا خوانا نیست (مثلاً Question object (1)). برای حل این مشکل، فایل polls/models.py را باز کنید و متد __str__ را اضافه کنید:

Python (polls/models.py)
class Question(models.Model):
    # ... فیلدها ...
    def __str__(self):
        return self.question_text

class Choice(models.Model):
    # ... فیلدها ...
    def __str__(self):
        return self.choice_text

۲. قدرت‌نمایی با API دیتابیس جنگو

جنگو ابزارهای قدرتمندی برای جستجو و فیلتر کردن داده‌ها دارد. نگاه کنید:

Python Shell
# پیدا کردن سوال با ID شماره ۱
>>> Question.objects.get(pk=1)


# پیدا کردن تمام سوالاتی که متنشان با "What" شروع می‌شود
>>> Question.objects.filter(question_text__startswith="What")
]>

همچنین می‌توانیم به راحتی برای سوال‌ها، گزینه (Choice) بسازیم:

Python Shell
>>> q = Question.objects.get(pk=1)

# دیدن گزینه‌های مربوط به این سوال (فعلاً خالیه)
>>> q.choice_set.all()


# ساختن سه گزینه برای این سوال
>>> q.choice_set.create(choice_text="Not much", votes=0)
>>> q.choice_set.create(choice_text="The sky", votes=0)
>>> q.choice_set.create(choice_text="Just hacking", votes=0)

# حالا دوباره لیست بگیریم
>>> q.choice_set.all()
, , ]>

۳. ورود به دنیای ادمین (Django Admin)

یکی از ویژگی‌هایی که جنگو را از بقیه متمایز می‌کند، پنل مدیریت خودکار آن است. جنگو برای مدیران سایت یک پنل حرفه‌ای می‌سازد تا بتوانند محتوا را مدیریت کنند.

ساخت نام کاربری مدیر (Superuser)

برای ورود به پنل ادمین، نیاز به یک حساب کاربری داریم. دستور زیر را بزنید:

Bash
python manage.py createsuperuser
💡
نکته مهم: موقع تایپ رمز عبور، چیزی روی صفحه نمایش داده نمی‌شود (برای امنیت). نگران نباشید، رمز خود را تایپ کنید و اینتر بزنید.

حالا سرور را روشن کنید و به آدرس http://127.0.0.1:8000/admin/ بروید و وارد شوید.

۴. اضافه کردن اپلیکیشن Polls به ادمین

به طور پیش‌فرض، مدل‌های ما در پنل ادمین دیده نمی‌شوند. فایل polls/admin.py را باز کنید و کد زیر را بنویسید:

Python (polls/admin.py)
from django.contrib import admin
from .models import Question

admin.site.register(Question)

حالا صفحه ادمین را رفرش کنید. بخش Questions اضافه شده و تمام فرم‌ها به صورت خودکار ساخته شده‌اند!

0 دیدگاه