طراحی سایت با هوش مصنوعی قسمت اول

<p>طراحی سایت با هوش مصنوعی قسمت اول</p>

فصل اول: ساخت وبلاگ با جنگو و هوش مصنوعی 🚀

به دوره آموزشی ما خوش اومدید! شعار ما اینه: «اول منطق و الگوریتم رو یاد بگیر، بعد کدش رو با کمک هوش مصنوعی بساز!» تو این کتاب، قراره یاد بگیریم چطور پروژه‌های وب حرفه‌ای رو با جنگو (Django) بسازیم. این فصل اول، شما رو با آجرهای اصلی ساخت یه اپلیکیشن جنگو آشنا می‌کنه. ما روی درک مفاهیم تمرکز می‌کنیم و برای نوشتن کدهای تکراری، از دستیار هوش مصنوعی‌مون کمک می‌گیریم.

این فصل یه دید کلی از فریم‌ورک جنگو و اجزای اصلیش بهتون میده: مدل‌ها، تمپلیت‌ها، ویوها و URLها. هدف اینه که بفهمید جنگو چطور کار می‌کنه و این اجزا چطور با هم حرف می‌زنن. وقتی منطق رو فهمیدید، نوشتن کدش با یه پرامپت ساده، کاری نداره!

این فصل نقشه راه شماست. اگه اولش بعضی چیزا گنگ بود، نگران نباشید! در ادامه همه چیز رو با جزئیات باز می‌کنیم.

مفاهیمی که تو این فصل یاد می‌گیریم:

  • منطق پشت نصب پایتون و جنگو
  • مفهوم محیط مجازی (Virtual Environment) و چرایی استفاده از اون
  • منطق ساختار یه پروژه جنگو
  • مفهوم مدل‌های داده (Data Models)
  • منطق مایگریشن‌ها و ارتباط با دیتابیس
  • کاربرد پنل ادمین
  • منطق QuerySetها برای کار با داده‌ها
  • مفهوم ویوها، تمپلیت‌ها و URLها
  • و درک چرخه درخواست/پاسخ در جنگو

۱. آماده‌سازی محیط: پایتون 🐍

جنگو ۵ با پایتون ۳.۱۲ سازگاره. اول باید مطمئن بشیم پایتون روی سیستم ما نصبه. منطق این کار ساده است: جنگو یه کتابخونه پایتونیه، پس اول به خود پایتون نیاز داریم!

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

پرامپت پیشنهادی: «چطور بفهمم پایتون ۳ روی سیستم من (مثلاً ویندوز/مک) نصب هست یا نه؟ دستورش رو بهم بده.»

هوش مصنوعی به شما دستوری شبیه به این رو میده. اون رو در خط فرمان وارد کنید:

python3 --version

اگه نصب نبود، از هوش مصنوعی بخواید لینک دانلود و راهنمای نصب رو بهتون بده.

۲. منطق محیط مجازی (Virtual Environment)

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

حالا که منطق رو فهمیدیم، میریم سراغ هوش مصنوعی:

پرامپت پیشنهادی: «می‌خوام با پایتون ۳ یه محیط مجازی به اسم my_env بسازم. دستور ساخت و فعال کردنش رو برای ویندوز/مک بهم بده.»

دستور ساخت محیط مجازی:

python -m venv my_env

دستور فعال‌سازی در لینوکس/مک:

source my_env/bin/activate

دستور فعال‌سازی در ویندوز:

.\my_env\Scripts\activate

۳. نصب جنگو

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

پرامپت پیشنهادی: «می‌خوام آخرین نسخه جنگو ۵ رو با pip داخل محیط مجازی فعالم نصب کنم. دستور دقیقش چیه؟ بعدش چطور چک کنم که درست نصب شده؟»

دستور نصب جنگو:

python -m pip install Django~=5.0.4

دستور چک کردن نسخه نصب شده:

python -m django --version

۴. منطق معماری جنگو (MTV)

جنگو کارها رو به سه بخش اصلی تقسیم می‌کنه تا همه چیز مرتب باشه. به این میگن معماری MTV (Model-Template-View):

  • Model (مدل): نقشه دیتابیس شماست. به جنگو میگه چه داده‌هایی رو با چه ساختاری ذخیره کنه (مثلاً یه پست وبلاگ، عنوان داره، متن داره و تاریخ انتشار).
  • Template (تمپلیت): ویترین مغازه شماست. کدهای HTML که ظاهر سایت رو به کاربر نشون میدن.
  • View (ویو): مغز متفکر ماجرا! وقتی کاربر یه صفحه‌ای رو درخواست می‌کنه، ویو میره از مدل داده‌های لازم رو از دیتابیس می‌گیره، اون‌ها رو مرتب می‌کنه و به تمپلیت میده تا به کاربر نشون بده.

منطق چرخه درخواست و پاسخ در جنگو 🔄

کاربر یه آدرس (URL) رو درخواست می‌کنه ➡️ جنگو درخواست رو به ویوی مربوطه پاس میده ➡️ ویو با مدل حرف می‌زنه و داده‌ها رو می‌گیره ➡️ ویو داده‌ها رو به تمپلیت میده ➡️ تمپلیت یه صفحه HTML خوشگل می‌سازه ➡️ جنگو این صفحه رو به مرورگر کاربر برمی‌گردونه.

حالا که با منطق کلی آشنا شدیم، در بخش‌های بعدی قدم به قدم هر کدوم از این اجزا رو با کمک هوش مصنوعی می‌سازیم!

۵. ویژگی‌های جدید جنگو ۵

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

مهم‌ترین ویژگی‌های جدید اینا هستن:

  • فیلترهای Facet در پنل ادمین: یه قابلیت باحال که تعداد نتایج هر فیلتر رو کنارش نشون میده.
  • ساده‌سازی رندر کردن فیلدهای فرم: روش‌های جدید و ساده‌تر برای نمایش فرم‌ها در تمپلیت‌ها.
  • مقادیر پیش‌فرض محاسبه‌شده توسط دیتابیس: میشه کاری کرد که مقدار پیش‌فرض یه فیلد، توسط خود دیتابیس و به صورت پویا محاسبه بشه.
  • فیلدهای مدل تولیدشده توسط دیتابیس: یه نوع فیلد جدید که مقدارش همیشه به صورت خودکار توسط دیتابیس تولید و آپدیت میشه.

۶. ساخت اولین پروژه: وبلاگ

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

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

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

پرامپت پیشنهادی: «می‌خوام یه پروژه جنگو جدید به اسم mysite بسازم. دستور خط فرمانش چیه؟»

هوش مصنوعی این دستور رو به شما میده:

django-admin startproject mysite

این دستور یه پوشه به اسم mysite با یه سری فایل‌های اولیه برامون می‌سازه که اسکلت اصلی پروژه‌مونه.

منطق فایل‌های ساخته شده:

  • manage.py: آچار فرانسه ما! یه ابزار خط فرمان برای تعامل با پروژه.
  • settings.py: قلب پروژه! تمام تنظیمات و پیکربندی‌ها (مثل تنظیمات دیتابیس) اینجاست.
  • urls.py: آدرس‌دهی پروژه. به جنگو میگه هر آدرسی رو به کدوم ویو بفرسته.

۷. اعمال مایگریشن‌های اولیه دیتابیس

منطق این بخش چیه؟ جنگو یه سری اپلیکیشن پیش‌فرض (مثل سیستم مدیریت کاربر و پنل ادمین) داره که خودشون به یه سری جدول تو دیتابیس نیاز دارن. ما باید قبل از هر کاری، این جدول‌های اولیه رو تو دیتابیسمون بسازیم. به این کار میگن مایگریشن (Migration). دیتابیس پیش‌فرض جنگو برای شروع، SQLite هست که خیلی سبکه و نیازی به نصب جداگانه نداره.

پرامپت پیشنهادی: «چطور می‌تونم مایگریشن‌های اولیه دیتابیس رو توی پروژه جنگو جدیدم اعمال کنم؟ دستورات لازم رو بهم بده.»

هوش مصنوعی این دستورها رو به شما میده:

cd mysite
python manage.py migrate

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

۸. اجرای سرور توسعه

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

پرامپت پیشنهادی: «چطور می‌تونم سرور توسعه جنگو رو اجرا کنم؟»

python manage.py runserver

حالا اگه مرورگرتون رو باز کنید و به آدرس http://127.0.0.1:8000/ برید، باید صفحه خوش‌آمدگویی جنگو رو ببینید که نشون میده همه چیز به درستی کار می‌کنه! 🎉

۵. تنظیمات پروژه (settings.py)

فایل settings.py قلب پروژه ماست. منطقش اینه که تمام پیکربندی‌های اصلی سایت، از تنظیمات دیتابیس گرفته تا اپلیکیشن‌های نصب شده، در یک مکان مرکزی مدیریت بشن. بیاید چندتا از مهم‌ترین تنظیمات رو بشناسیم:

  • DEBUG: وقتی روی True باشه، اگه خطایی پیش بیاد، جنگو یه صفحه پر از جزئیات فنی نشون میده که برای اشکال‌زدایی عالیه. هشدار: موقع بردن سایت روی سرور واقعی، این گزینه حتماً باید False بشه!
  • INSTALLED_APPS: لیستی از تمام اپلیکیشن‌هایی که تو این پروژه فعال هستن. هر اپ جدیدی که بسازیم، باید اینجا معرفیش کنیم.
  • DATABASES: تنظیمات دیتابیس پروژه. به صورت پیش‌فرض از SQLite استفاده می‌کنه که برای شروع عالیه.

منطق پروژه در مقابل اپلیکیشن

در دنیای جنگو، پروژه مثل یه خونه است و اپلیکیشن مثل اتاق‌های مختلف اون خونه (آشپزخونه، اتاق خواب و...). هر اپلیکیشن یه کار خاص رو انجام میده (مثلاً وبلاگ، فروشگاه، تالار گفتگو) و می‌تونه به صورت مستقل تو پروژه‌های دیگه هم استفاده بشه. این تفکیک به ما کمک می‌کنه کدهامون مرتب و قابل استفاده مجدد باشن.

۶. ساخت اپلیکیشن وبلاگ

خب، بریم سراغ ساختن اولین اتاق خونه‌مون: اپلیکیشن وبلاگ! منطق این کار، ایجاد یه ساختار پوشه و فایل استاندارد برای اپلیکیشنه که جنگو اون رو می‌شناسه.

پرامپت پیشنهادی: «می‌خوام یه اپلیکیشن جنگو جدید به اسم blog بسازم. دستور خط فرمانش چیه؟»

python manage.py startapp blog

این دستور یه پوشه به اسم blog با یه سری فایل خالی مثل models.py (برای مدل‌ها) و views.py (برای ویوها) برامون می‌سازه

۷. طراحی نقشه دیتابیس با مدل‌ها (models.py)

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

ما برای وبلاگمون به یه مدل Post نیاز داریم. بیاید فیلدهایی که یه پست نیاز داره رو مشخص کنیم: عنوان، اسلاگ (یه متن کوتاه برای URL)، متن اصلی، تاریخ انتشار، تاریخ ایجاد، تاریخ آخرین آپدیت و وضعیت (پیش‌نویس یا منتشر شده).

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

پرامپت پیشنهادی: «یه مدل جنگو به اسم Post برای یه وبلاگ برام بساز که فیلدهای عنوان، اسلاگ، متن اصلی، تاریخ انتشار، تاریخ ایجاد، تاریخ آپدیت و وضعیت (پیش‌نویس/منتشر شده) رو داشته باشه. مرتب‌سازی پیش‌فرض رو هم بر اساس جدیدترین تاریخ انتشار بذار.»

هوش مصنوعی کدی شبیه به این رو برای شما تولید می‌کنه. بیاید این کد رو با هم کالبدشکافی کنیم. این کد رو در فایل blog/models.py قرار بدید:

# 1. وارد کردن ابزارهای لازم از کتابخانه جنگو
from django.db import models
from django.utils import timezone

# 2. تعریف کلاس اصلی مدل ما
class Post(models.Model):
    
    # 3. تعریف گزینه‌های وضعیت (پیش‌نویس یا منتشر شده)
    class Status(models.TextChoices):
        DRAFT = 'DF', 'Draft'
        PUBLISHED = 'PB', 'Published'

    # 4. تعریف فیلدهای مدل (ستون‌های جدول دیتابیس)
    title = models.CharField(max_length=250)
    slug = models.SlugField(max_length=250)
    body = models.TextField()
    publish = models.DateTimeField(default=timezone.now)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    status = models.CharField(max_length=2,
                              choices=Status.choices,
                              default=Status.DRAFT)

    # 5. تعریف تنظیمات جانبی مدل (متادیتا)
    class Meta:
        ordering = ['-publish']
        indexes = [
            models.Index(fields=['-publish']),
        ]

    # 6. تعریف نمایش متنی هر پست
    def __str__(self):
        return self.title

کالبدشکافی کد بالا 👨‍⚕️

  1. وارد کردن ابزارها: ما به ابزارهای models برای ساختن مدل و فیلدها، و timezone برای کار با تاریخ و زمان نیاز داریم.
  2. کلاس Post: هر مدل در جنگو یک کلاس پایتونه. ما یه کلاس به اسم Post ساختیم که از models.Model ارث‌بری می‌کنه. این ارث‌بری تمام قدرت‌های جنگو رو به مدل ما میده.
  3. کلاس Status: برای اینکه وضعیت پست‌ها رو محدود به دو گزینه «پیش‌نویس» و «منتشر شده» کنیم، یه کلاس داخلی به اسم Status ساختیم. این کار باعث میشه کد ما خواناتر و مدیریت گزینه‌ها راحت‌تر بشه.
  4. فیلدها (مهم‌ترین بخش!):
    • title = models.CharField(max_length=250): این فیلد برای متن‌های کوتاه مثل عنوانه. max_length حداکثر طول مجاز رو مشخص می‌کنه.
    • slug = models.SlugField(max_length=250): اینم یه فیلد متنیه، ولی مخصوص آدرس‌های URL. فقط حروف، اعداد، خط تیره و زیرخط قبول می‌کنه.
    • body = models.TextField(): این برای متن‌های بلند مثل بدنه اصلی پست استفاده میشه و محدودیت طول نداره.
    • publish = models.DateTimeField(default=timezone.now): برای ذخیره تاریخ و زمان. ما گفتیم مقدار پیش‌فرضش، زمان حال باشه.
    • created = models.DateTimeField(auto_now_add=True): اینم یه فیلد تاریخ و زمانه، اما با auto_now_add=True، جنگو به صورت خودکار فقط یک بار (موقع ساخته شدن پست) اون رو با زمان حال پر می‌کنه.
    • updated = models.DateTimeField(auto_now=True): اینم مثل قبلیه، ولی با auto_now=True، هر بار که پست آپدیت بشه، این فیلد هم به صورت خودکار آپدیت میشه.
    • status = models.CharField(...): یه فیلد متنی کوتاه که با پارامتر choices، مقدارش رو به گزینه‌هایی که تو کلاس Status تعریف کردیم، محدود می‌کنیم.
  5. کلاس Meta: برای تنظیمات خود مدل استفاده میشه. ما اینجا گفتیم پست‌ها به صورت پیش‌فرض بر اساس تاریخ انتشار (publish) و به صورت نزولی (علامت منفی -) مرتب بشن.
  6. متد __str__: این یه متد استاندارد پایتونه. ما به جنگو میگیم هر وقت خواستی یه پست رو به صورت متنی نشون بدی (مثلاً تو پنل ادمین)، فقط عنوانش رو نشون بده. این کار به خوانایی کمک می‌کنه.

فعال‌سازی اپلیکیشن

فراموش نکنید که باید اپلیکیشن جدیدمون رو به پروژه معرفی کنیم. منطقش اینه که به جنگو بگیم: «هی! یه اتاق جدید به اسم blog به خونه اضافه شده، حواست بهش باشه!». برای این کار، اسم اپلیکیشن رو به لیست INSTALLED_APPS در فایل settings.py اضافه می‌کنیم.

پرامپت پیشنهادی: «چطور می‌تونم اپلیکیشن 'blog' رو به پروژه‌ام اضافه کنم؟ کد لازم برای فایل settings.py رو بهم بده.»

هوش مصنوعی به شما میگه که خط 'blog.apps.BlogConfig', یا فقط 'blog', رو به لیست INSTALLED_APPS اضافه کنید.

 

۸. ایجاد رابطه بین مدل‌ها (رابطه چند به یک)

منطق میگه هر پست وبلاگ حتماً یه نویسنده داره. پس ما باید بین مدل Post و مدل User (کاربر) یه رابطه برقرار کنیم. خبر خوب اینه که جنگو خودش یه سیستم مدیریت کاربر کامل با یه مدل User آماده داره.

ما می‌خوایم یه رابطه چند به یک بسازیم. یعنی: هر پست فقط یک نویسنده داره، ولی هر نویسنده می‌تونه چندین پست داشته باشه. برای این کار، از یه فیلد خاص به اسم ForeignKey استفاده می‌کنیم.

پرامپت پیشنهادی: «می‌خوام به مدل Post که قبلاً ساختم، یه فیلد author اضافه کنم. این فیلد باید یه رابطه چند به یک با مدل User پیش‌فرض جنگو داشته باشه. کد لازم برای فایل models.py رو بهم بده و توضیح بده on_delete و related_name چی هستن.»

هوش مصنوعی به شما میگه که این فیلد رو به مدل Post اضافه کنید:

from django.conf import settings

# ... inside the Post model ...
author = models.ForeignKey(
    settings.AUTH_USER_MODEL,
    on_delete=models.CASCADE,
    related_name='blog_posts'
)

کالبدشکافی فیلد ForeignKey:

  • settings.AUTH_USER_MODEL: این یه راه هوشمندانه برای اشاره به مدل User پیش‌فرض جنگو هست.
  • on_delete=models.CASCADE: این خیلی مهمه! به دیتابیس میگه اگه یه زمانی یه کاربر حذف شد، تمام پست‌هایی که اون کاربر نوشته هم به صورت آبشاری (Cascade) حذف بشن.
  • related_name='blog_posts': این یه اسم برای رابطه برعکسه. یعنی بعداً می‌تونیم به راحتی از طریق یه آبجکت User، به تمام پست‌هاش با دستوری مثل user.blog_posts.all() دسترسی پیدا کنیم.

حالا مدل Post ما کامله و آماده است که با دیتابیس همگام‌سازی بشه.

۹. ساخت و اعمال مایگریشن‌ها

حالا که نقشه دیتابیس (مدل Post) رو با کد پایتون کشیدیم، باید به جنگو بگیم که این نقشه رو به دستورات واقعی SQL تبدیل کنه و جدول مربوطه رو تو دیتابیس بسازه. منطق مایگریشن همینه: ردیابی تغییرات مدل‌ها و اعمال اون‌ها به دیتابیس.

قدم اول: ساخت فایل مایگریشن (makemigrations)

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

پرامپت پیشنهادی: «من مدل‌های اپلیکیشن blog رو تغییر دادم. چطور می‌تونم یه فایل مایگریشن جدید براش بسازم؟»

python manage.py makemigrations blog

این دستور یه فایل جدید مثل 0001_initial.py داخل پوشه migrations اپلیکیشن blog می‌سازه. این فایل حاوی دستورالعمل‌های ساخت جدول Post هست.

قدم دوم: اعمال مایگریشن به دیتابیس (migrate)

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

پرامپت پیشنهادی: «چطور می‌تونم مایگریشن‌های موجود رو روی دیتابیس اعمال کنم؟»

python manage.py migrate

با اجرای این دستور، جنگو تمام مایگریشن‌های اعمال نشده رو اجرا می‌کنه و دیتابیس شما با مدل‌های پایتونی‌تون کاملاً همگام میشه. 🎉

از این به بعد، هر بار که مدل‌هاتون رو تغییر دادید، باید این فرآیند دو مرحله‌ای (makemigrations و بعد migrate) رو تکرار کنید.

مقدمه: دیکشنری جنگو برای شروع! 📖 (آشنایی با اصطلاحات کلیدی)

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

شعار ما یادتونه؟ «اول منطق رو بفهم، بعد کد بزن!». پس بریم سراغ درک منطق این کلمات کلیدی.

۱. پروژه (Project) در مقابل اپلیکیشن (Application)

  • پروژه: کل وب‌سایت شماست. مثل یه خونه. پروژه تنظیمات کلی سایت (مثل تنظیمات دیتابیس) رو نگه میداره.
  • اپلیکیشن: هر بخش مجزای سایت شماست. مثل اتاق‌های مختلف اون خونه. مثلاً یه سایت می‌تونه یه اپلیکیشن «وبلاگ»، یه اپلیکیشن «فروشگاه» و یه اپلیکیشن «تالار گفتگو» داشته باشه. این تفکیک به مرتب بودن کدها کمک می‌کنه.

۲. مدل (Model)

منطق: مدل، نقشه دیتابیس شماست که با کد پایتون نوشته میشه. شما به جنگو میگید چه نوع داده‌هایی دارید و هر کدوم چه ویژگی‌هایی دارن. مثلاً برای یه وبلاگ، شما یه مدل به اسم `Post` (پست) تعریف می‌کنید و میگید هر پست یه «عنوان»، یه «متن اصلی» و یه «تاریخ انتشار» داره.

نتیجه: جنگو این نقشه پایتونی رو می‌گیره و به صورت خودکار جدول‌های مربوطه رو تو دیتابیس می‌سازه. دیگه لازم نیست خودتون رو درگیر کدهای پیچیده SQL کنید!

۳. ویو (View)

منطق: ویو، مغز متفکر اپلیکیشن شماست. وقتی یه کاربر یه صفحه‌ای از سایت شما رو درخواست می‌کنه (مثلاً صفحه لیست پست‌های وبلاگ)، این ویوئه که تصمیم می‌گیره چه کاری باید انجام بشه.

کارهاش چیه؟ ویو با «مدل» حرف میزنه، لیست پست‌ها رو از دیتابیس می‌گیره، اون‌ها رو مرتب می‌کنه و آماده می‌کنه تا به کاربر نشون داده بشن.

۴. تمپلیت (Template)

منطق: تمپلیت، ویترین مغازه شماست. اینا فایل‌های HTML هستن که ظاهر سایت رو مشخص می‌کنن. اما اینا HTML خالی نیستن! یه سری جای خالی (متغیر) دارن.

کارش چیه؟ «ویو» داده‌هایی که از دیتابیس گرفته (مثلاً لیست پست‌ها) رو به «تمپلیت» پاس میده. تمپلیت هم اون جاهای خالی رو با داده‌های واقعی پر می‌کنه و یه صفحه HTML کامل و خوشگل تحویل میده.

۵. URL

منطق: URL، آدرس‌دهی سایت شماست. شما یه فایل مخصوص دارید که توش مشخص می‌کنید هر آدرسی (URL) باید کدوم «ویو» رو اجرا کنه. مثل یه اپراتور تلفن که تماس‌ها رو به بخش مربوطه وصل می‌کنه.

مثال: شما تعریف می‌کنید که اگه کاربر آدرس `/blog/` رو درخواست کرد، ویویی که مسئول نمایش لیست پست‌هاست، باید اجرا بشه.

۶. مایگریشن (Migration) و Migrate

این دوتا کلمه خیلی مهمن و همیشه با هم میان:

  • مایگریشن (Migration): وقتی شما «مدل» (نقشه دیتابیس) رو تغییر میدید (مثلاً یه فیلد جدید بهش اضافه می‌کنید)، جنگو این تغییرات رو تو یه فایل به اسم «مایگریشن» ثبت می‌کنه. این فایل مثل یه دستورالعمل برای آپدیت دیتابیسه. (با دستور `makemigrations` ساخته میشه).
  • Migrate: این دستوریه که شما اجرا می‌کنید تا جنگو تمام اون فایل‌های دستورالعمل (مایگریشن‌ها) رو بخونه و دیتابیس رو واقعاً آپدیت کنه.

خلاصه: با مایگریشن، تغییرات رو ثبت می‌کنیم و با migrate، اون‌ها رو اعمال می‌کنیم.

جمع‌بندی چرخه کامل 🔄

کاربر یه URL رو درخواست می‌کنه ➡️ جنگو اون رو به ویو مربوطه می‌فرسته ➡️ ویو از مدل داده‌ها رو می‌گیره ➡️ ویو داده‌ها رو به تمپلیت میده ➡️ و یه صفحه HTML خوشگل به کاربر برمی‌گردونه.

حالا که با این کلمات کلیدی آشنا شدیم، کاملاً آماده‌ایم که سفر اصلی‌مون رو شروع کنیم و اولین اپلیکیشن وبلاگمون رو با کمک هوش مصنوعی بسازیم! 🚀