جنگو یک ابزار فوق العاده مفید برای ساخت برنامه های تحت وب با پایتون است. از معماری Model-View-Template (MVT) پیروی می کند که یک الگوی طراحی محبوب برای ساخت برنامه های وب است.

در معماری MVT، مدل به نمایش داخلی اطلاعات ذخیره شده اشاره دارد، View مسئول پردازش درخواست های کاربر و بازگرداندن پاسخ های مناسب است، و Template مسئول ارائه داده های دریافت شده از View است.

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

در این آموزش یاد خواهید گرفت که چگونه از پوسته تعاملی جنگو برای ایجاد، خواندن، به روز رسانی و حذف اشیاء استفاده کنید. همچنین با ثبت مدل ها در رابط مدیریت آشنا خواهید شد که برای طراحی پایگاه داده های سازمان یافته برای پروژه های جنگو شما مفید است.

این مهارت ها به شما این امکان را می دهد که پروژه های خود را به طور کارآمدتری مدیریت کنید و اطمینان حاصل کنید که آنها به خوبی کار می کنند.

پیش نیازها

برای استفاده حداکثری از این آموزش، باید درک اولیه ای از Python و Django داشته باشید.

روش راه اندازی پروژه

برای کمک به درک مفاهیم موجود در این آموزش، یک برنامه ساده “todo” توسعه خواهید داد.

برای شروع، یک دایرکتوری جدید در جایی که می خواهید ایجاد کنید host پروژه، سپس دایرکتوری ها را به آن تغییر دهید.

پس از ورود به پوشه، نصب کنید virtualenv، ابزاری برای ایجاد محیط های ایزوله پایتون.

pip install virtualenv
virtualenv venv
source venv/bin/activate

pip install virtualenv ابزار لازم را نصب می کند. virtualenv venv یک محیط مجازی به نام venv ایجاد می کند. در آخر، source venv/bin/activate محیط مجازی را فعال می کند و امکان توسعه ایزوله پایتون را در محیط تعیین شده فراهم می کند.

به راحتی می توانید نامی را که در حین ایجاد محیط مجازی انتخاب کرده اید جایگزین “venv” کنید.

مطمئن شوید که جنگو نصب شده است. اگر نه، آن را از طریق خط فرمان مانند زیر نصب کنید:

pip install django

با استفاده از دستور زیر یک پروژه را شروع کنید:

django-admin startproject todoproject

به فهرست پروژه تغییر دهید، todoproject، سپس یک برنامه جدید ایجاد کنید.

cd todoproject
python manage.py startapp todoapp

در مرحله بعد، نام برنامه را وارد کنید INSTALLED_APPS لیست در settings.py. در ویرایشگر کد خود، به آن بروید settings.py فایل.

 INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles', 
    'todoapp' # new app
]

مدل های جنگو

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

برنامه todo وظایف را ذخیره می کند. فقط با ذخیره عنوان کاری که باید انجام شود و وضعیت تکمیل آن – یعنی اینکه آیا کار انجام شده است یا نه، آن را ساده نگه خواهید داشت. باز کن models.py در ویرایشگر متن خود فایل کنید و کد زیر را اضافه کنید:

from django.db import models

class Task(models.Model):
    title = models.CharField(max_length=100)
    completed = models.BooleanField(default=False)

در این مدل فوق العاده ساده:

  • Task نام مدل است
  • title یک رشته از نوع است CharField با حداکثر طول 100 کاراکتر. این قسمت برای ذخیره متن کوتاه مناسب است.
  • completed یک رشته از نوع است BooleanField با مقدار پیش فرض False. این فیلد یک بولی (درست/نادرست) است. مقدار پیش فرض روی تنظیم شده است False، با فرض اینکه کارها به طور پیش فرض به صورت کامل نشده شروع شوند.
پیشنهاد می‌کنیم بخوانید:  پایتون ناهمزمان برای توسعه وب

بخش اصلی یک مدل لیست چیزهایی است که ذخیره می کند (به نام فیلدها). title و completed فیلدهایی هستند که از BooleanField و CharField انواع میدان

نمونه های دیگری از انواع فیلدهایی که می توانید استفاده کنید عبارتند از:

  • AutoField: یک IntegerField که به طور خودکار افزایش می یابد.
  • BooleanField: نشان دهنده مقادیر true/false است.
  • CharField: مقادیر مبتنی بر متن را ذخیره می کند.
  • DateField: یک تاریخ را با استفاده از a نشان می دهد datetime.date نمونه، مثال.
  • DateTimeField: تاریخ و زمان را با استفاده از a نشان می دهد datetime.datetime نمونه، مثال.
  • DecimalField: یک عدد اعشاری با دقت ثابت را با استفاده از a نشان می دهد Decimal نمونه، مثال.
  • EmailField: آ CharField اعتبارسنجی مقدار به عنوان یک آدرس ایمیل معتبر
  • ImageField: ارث می برد از FileField، اطمینان حاصل شود که اشیاء آپلود شده تصاویر معتبر هستند.
  • IntegerField: مقادیر صحیح را در یک محدوده امن ذخیره می کند.
  • SlugField: نشان دهنده یک برچسب کوتاه برای چیزی است که معمولاً در URL ها استفاده می شود.
  • TextField: یک فیلد متنی بزرگ
  • TimeField: نشان دهنده زمان با استفاده از a است datetime.time نمونه، مثال.
  • URLField: آ CharField برای URL ها

انواع فیلدهای دیگر رابطه بین جداول را توضیح می دهند:

  • ForeignKey: نشان دهنده یک رابطه چند به یک است.
  • ManyToManyField: نشان دهنده یک رابطه چند به چند است.
  • OneToOneField: نشان دهنده رابطه یک به یک است. اساساً شبیه الف است ForeignKey با unique=True، اما طرف “معکوس” رابطه مستقیماً یک شی واحد را به دست می دهد.

برای همگام سازی پایگاه داده خود با آخرین تغییرات مدل های جنگو، باید مهاجرت ها را اجرا کنید. مطمئن شوید که در همان دایرکتوری هستید manage.py فایل است و سپس موارد زیر را اجرا کنید:

python manage.py makemigrations
python manage.py migrate

اسکرین شات-از-2024-01-12-14-48-39
انجام مهاجرت ها

مدل های خود را در admin.py فایل. این به مدیران امکان مشاهده، اضافه کردن، ویرایش و حذف نمونه‌هایی از آن را می‌دهد Task از طریق رابط مدیریت جنگو مدل کنید. این یک راه راحت برای تعامل با داده های شما در طول توسعه و آزمایش است.

#admin.py
from django.contrib import admin
from .models import Task
# Register your models here.

admin.site.register(Task)

شما باید a ایجاد کنید superuser به منظور دسترسی به رابط مدیریت جنگو. در terminal، موارد زیر را اجرا کنید:

python manage.py createsuperuser
اسکرین شات-از-2024-01-12-14-52-19
ایجاد یک ابر کاربر

دستورات را دنبال کنید و باید یک حساب کاربری فوق‌العاده برای دسترسی به رابط مدیریت داشته باشید.

پوسته جنگو

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

برای دسترسی به پوسته، دستور زیر را از پوشه پروژه اجرا کنید:

python manage.py shell

با وارد کردن مدل Task شروع کنید.

اسکرین شات-از-2024-01-12-15-15-57
وارد کردن مدل به پوسته جنگو

عملیات اساسی انجام شده روی یک مدل معمولاً ایجاد، خواندن، به‌روزرسانی و حذف می‌شود – از این رو برنامه CRUD نامیده می‌شود. در اینجا روش انجام هر چهار عملیات را یاد خواهید گرفت.

ایجاد کردن

برای ایجاد یک کار جدید، موارد زیر را در پوسته خود تایپ کنید:


>>> new_task = Task(title="Complete Assignment", completed=False)
>>> new_task.save()

به طور متناوب، می توانید از create عملکرد، مانند این:


Task.objects.create(title="Another Task", completed=False)

برای بررسی تمام وظایف، موارد زیر را وارد کنید:

Task.objects.all()

شما باید چیزی شبیه به آنچه در تصویر زیر می بینید دریافت کنید. توجه داشته باشید که یک مجموعه کوئری با وظیفه ای که شما ایجاد کرده اید برگردانده می شود:

پیشنهاد می‌کنیم بخوانید:  چگونه شبکه خود را عیب یابی کنیم روی راهنمای عیب یابی مدل Linux – OSI
اسکرین شات-از-2024-01-15-12-32-55
ایجاد اشیاء در پوسته جنگو

خواندن

هنگامی که اشیاء را ایجاد کردید، باید بتوانید آنها را بخوانید. برای انجام این کار، جنگو ارائه می دهد get() و filter()مواد و روش ها.

را get() متد یک شی واحد را از پایگاه داده بر اساس بازیابی می کند روی شرایط مشخص شده در صورتی که هیچ شی یا چندین شی پیدا نشود، استثناهایی را ایجاد می کند و آن را برای پرس و جوهای منحصر به فرد مناسب می کند.

را filter() متد یک مجموعه پرس و جو از اشیاء پایگاه داده با شرایط مشخص شده را بازیابی می کند. در صورت یافتن چندین یا هیچ شیء استثنایی ایجاد نمی کند و بنابراین برای پرس و جوهایی با چندین نتیجه ممکن ایده آل است.

می توانید استفاده کنید get() روشی برای بازیابی کار با یک عنوان خاص.


specific_task = Task.objects.get(title="Complete Assignment")
print(f'Title: {specific_task.title}, Completed: {specific_task.completed}')

خروجی کد بالا به صورت زیر است:

اسکرین شات-از-2024-01-15-13-59-07
بازیابی یک شی خاص در پوسته جنگو

شما همچنین می توانید یک کار را در صورت داشتن شرایط خاص بازیابی کنید. اینجاست که روش فیلتر می درخشد.

بگویید که می‌خواستید کارهای ناقص را دریافت کنید، این همان وظایف با completed فیلد تنظیم شده است False. می توانید این کد را اضافه کنید:

incomplete_tasks = Task.objects.filter(completed=False)
for task in incomplete_tasks:
    print(f'Title: {task.title}, Completed: {task.completed}')

با این کار تمام کارهایی که تکمیل نشده اند را برمی گرداند.

اسکرین شات-از-2024-01-15-14-02-44-1
بازیابی اشیایی که شرایط خاصی را در پوسته جنگو دارند

این روش برای بازیابی چندین شیء مبتنی بر ایده آل است روی شرایط خاص

به روز رسانی

اگر می خواهید تغییراتی ایجاد کنید، می توانید این کار را با استفاده از update() روش. فرض کنید تمام کارها را انجام داده اید و اکنون می خواهید آنها را به عنوان انجام شده علامت گذاری کنید. این کد برای آن است:

incomplete_tasks = Task.objects.filter(completed=False)
incomplete_tasks.update(completed=True)

all_tasks = Task.objects.all()

for task in all_tasks:
    print(f'Title: {task.title}, Completed: {task.completed}')

خروجی کد بالا به صورت زیر است:

اسکرین شات-از-2024-01-15-14-37-07-1
به روز رسانی اشیاء در پوسته جنگو

این ابتدا وضعیت وظایف را به روز می کند completed، سپس کارهای تکمیل شده را چاپ می کند.

حذف

بعد از همه چیز، ممکن است بخواهید همه وظایف یا یک کار خاص را حذف کنید. شما می توانید این کار را با استفاده از delete() روش، مانند این:

task_to_delete = Task.objects.get(title="Another Task") 
task_to_delete.delete() 
all_tasks_after_deletion = Task.objects.all() 

for task in all_tasks_after_deletion:
    print(f'Title: {task.title}, Completed: {task.completed}')

کد بالا وظیفه ای را با عنوان “یک کار دیگر” با استفاده از get روش و سپس آن را با استفاده از delete روش. در نهایت، جزئیات تمام کارهای باقی مانده را چاپ می کند تا تأیید کند که حذف با موفقیت انجام شده است.

خروجی این است:

اسکرین شات-از-2024-01-15-14-53-40
حذف اشیاء در پوسته جنگو

همچنین می توانید کد بالا را به این صورت ساده کنید:

task_to_delete = Task.objects.get(title="Another Task").delete() 
all_tasks_after_deletion = Task.objects.all() 

for task in all_tasks_after_deletion:
    print(f'Title: {task.title}, Completed: {task.completed}')

شما می توانید به تمام وظایفی که در پنل مدیریت جنگو ایجاد کرده اید دسترسی داشته باشید. سرور را در terminal به شرح زیر است:

python manage.py runserver

سپس روی مرورگر خود، به سایت مراجعه کنید http://127.0.0.1:8000/admin/ و اعتبار سوپرکاربری که قبلا ایجاد کرده اید را وارد کنید. در آنجا می توانید به تمام وظایفی که ایجاد کرده اید دسترسی داشته باشید.

اسکرین شات-از-2024-01-15-14-59-40
رابط مدیریت جنگو

ما کار دیگر را حذف کردیم، بنابراین کار باقیمانده همانگونه که در بالا نشان داده شده است، کار “تکمیل تکلیف” است.

نتیجه

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

همچنین با اهمیت ثبت مدل ها در رابط مدیریت برای مدیریت آسان در حین توسعه آشنا شدید.

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

کد نویسی مبارک