لایه 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 ایجاد میشود.

این فایل حاوی دستوراتی است که django میتواند از روی آن جدولی به نام Item با ستون content در دیتابیس ایجاد کند.
۳. migrate
اگر به فایل db.sqlite که دیتابیس پروژه است توجه کنید، خواهید دید که حجم آن صفر است. حتی اگر در vs code روی آن کلیک کنید خواهید دید که خالی است. این یعنی کار هایی که کردیم هنوز دیتابیس را لمس نکرده است.
اکنون دستور زیر را وارد کنید تا django براساس دستور العملی که خودش در فایل 0001_initial.py ایجاد کرده، جدول Item با ستون content را بسازد.
python manage.py migrate
py manage.py 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 وارد داشبورد ادمین جنگو شوید. (مطمئن شوید که جنگو در حال اجرا باشد). با باز کردن این آدرس یک فرم لاگین برای شما ظاهر خواهد شد.

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

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

روی 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 نمایش دهید.