درک لایه model از مدل MVT در جنگو

Please login to bookmark Close

لایه model امکان ذخیره و بازیابی اطلاعات را در دیتابیس فراهم می‌کند. دیتابیس محل ذخیره سازی همه اطلاعات ضروری سایت ازجمله یوزرنیم و پسورد کاربران است.

در ادامه خواهیم دید که چطور باید لایه model را ایجاد کرد و آن را به view و template وصل کرد.

کار با دیتابیس شامل مراحل زیر است:

  • ایجاد (یا ویرایش ساختار) جداول
  • نوشتن اطلاعات
  • خواندن اطلاعات

۱. ایجاد اولین model

فایل models.py را باز کرده و کد زیر را در آن قرار دهید.

from django.db import models

class Item(models.Model):
    content = models.TextField()

۲. makemigrations

پس از اطمینان از اینکه محیط مجازی فعال است، دستور زیر را در cmd یا Terminal وارد کنید.

python manage.py makemigrations
py manage.py makemigrations

پس از اجرای این دستور، یک فایل جدید در پوشه migrations ایجاد می‌شود.

اجرای دستور makemigrations در جنگو

این فایل حاوی دستوراتی است که django می‌تواند از روی آن جدولی به نام Item با ستون content در دیتابیس ایجاد کند.

۳. migrate

اگر به فایل db.sqlite که دیتابیس پروژه است توجه کنید، خواهید دید که حجم آن صفر است. حتی اگر در vs code روی آن کلیک کنید خواهید دید که خالی است. این یعنی کار هایی که کردیم هنوز دیتابیس را لمس نکرده است.

اکنون دستور زیر را وارد کنید تا django براساس دستور العملی که خودش در فایل 0001_initial.py ایجاد کرده، جدول Item با ستون content را بسازد.

python manage.py migrate
py manage.py migrate

خروجی دستور بالا مطابق زیر خواهد بود.

اجرای دستور migrate در جنگو

قسمتی که با فلش مشخص کرده ام نشان می‌دهد فایل 0001_initial.py با موفقیت روی دیتابیس اعمال شده است.

شاید برایتان این سوال پیش بیاید که سایر خطوطی که در این تصویر دیده می‌شود چیست؟ django خودش در درون خود چندین app از پیش تعریف شده دارد که برخی امکانات مثل مدیریت کاربران را به صورت پیش فرض به آن اضافه می‌کند. برخی از این app ها درون خود فایل های migrations دارند و اولین بار که دستور migrate اجرا می‌شود، این فایل ها نیز در دیتابیس اعمال می‌شوند.

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

۴. نوشتن اطلاعات

فایل admin.py را باز کرده و کد زیر را در آن وارد کنید.

from django.contrib import admin
from app_hello_django.models import Item

admin.site.register(Item)

سپس با رفتن به آدرس http://127.0.0.1:8000/admin وارد داشبورد ادمین جنگو شوید. (مطمئن شوید که جنگو در حال اجرا باشد). با باز کردن این آدرس یک فرم لاگین برای شما ظاهر خواهد شد.

پنل مدیریت جنگو (Django admin)

برای ورود یک کاربر لازم داریم. از آنجایی که دیتابیس همین الان ساخته شده، هیچ یوزری در آن قرار ندارد و باید خودمان یک یوزر بسازیم.

برای ساخت یوزر، دستور زیر را وارد کنید.

python manage.py createsuperuser
py manage.py createsuperuser

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

ساخت کاربر ادمین با دستور createsuperuser در جنگو

اکنون پس از اینکه مطمئن شدید جنگو در حال اجراست، وارد صفحه لاگین شده و با اطلاعات کاربری که ساختید لاگین کنید. پس از لاگین صفحه ای به شکل زیر خواهید دید.

داشبورد پنل ادمین جنگو

روی Item که با فلش مشخص شده کلیک کنید تا وارد صفحه لیست آیتم ها شوید.

لیست آیتم‌ها در پنل ادمین جنگو

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

روی دکمه ADD ITEM کلیک کنید تا وارد صفحه زیر شوید.

افزودن اولین آیتم در پنل ادمین جنگو

یک متن دلخواه در کادر وارد کرده و سپس روی دکمه SAVE کلیک کنید تا وارد صفحه زیر شوید.

ثبت موفق اولین آیتم در جنگو

همانطور که در تصویر بالا مشاهده می‌شود توانستیم اولین آیتم خود را با موفقیت در دیتابیس وارد کنیم.

۵. خواندن اطلاعات

برای خواندن اطلاعات از جدول Item در دیتابیس، کد زیر را در views.py وارد کنید.

from django.shortcuts import render
from app_hello_django.models import Item

def hello_django(request):
    item = Item.objects.first()
    context = {
        'item': item
    }
    return render(request, "hello_django.html", context)

در کد بالا:

  • در خط ۲: مدل Item را ایمپورت کردیم تا بتوانیم به کمک آن اطلاعات را از دیتابیس بخوانیم.
  • در خط ۵: اولین آیمتی که در جدول Item ذخیره شده را از دیتابیس خوانده ایم.
  • در خط ۶ تا ۸: یک دیکشنری ساخته و آیتمی که خواندیم را در آن قرار داده ایم.
  • در خط ۹: آن دیکشنری را به template فرستاده ایم تا بتوانیم آن آیتم را در فایل hello_django.html نمایش دهیم.

۶. نمایش اطلاعات در template

فایل hello_django.html را باز کرده و کد زیر را در آن جایگزین کنید.

<body>
    <h1 class="hello">{{ item.content }}</h1>
</body>

سپس آدرس http://127.0.0.1:8000/hello-django را باز کنید. خروجی باید به شکل زیر باشد.

نمایش اولین آیتم در قالب جنگو

تبریک می‌گویم! شما توانستید دیتابیس ایجاد کرده، اطلاعاتی در آن بنویسید، آن اطلاعات را بخوانید و در نهایت در template نمایش دهید.

Please login to bookmark Close
پیشرفت شما در «دوره آموزش هسته جنگو (درک مدل MVT)» (100%)
نظرات

دیدگاهتان را بنویسید

100%
پیشرفت
فهرست مطالب

تمرین

این قسمت تمرین ندارد!

پاسخ تمرین ها

هنوز برای تمرین‌های این قسمت پاسخی ثبت نشده است!

اشتراک گذاری

چرا بهتره از فیلترشکن استفاده کنید؟

من همه ویدئو ها و پادکست های کُدباز رو توی یوتیوب و ساندکلود و پلتفرم هایی آپلود می‌کنم که اغلب فیلتر هستند.

اغلب آموزش‌ها ویدئو و پادکست دارند. پس اگر می‌خواهید از محتوای سایت بیشترین استفاده رو ببرید نیاز به فیلتر شکن دارید.

توجه داشته باشید که برای خرید از فروشگاه بهتره فیلتر شکن رو خاموش کنید.

تنظیمات

انتخاب زبان
تغییر تم