دیتابیس Database و مدل Model در Django
دیتابیس Database و مدل Model در جنگو از درس قبل به خاطر دارید که آطلاعات دورهها به صورت ثابت داخل
در درس قبل با Django آشنا شدیم، محیط مجازی ساختیم، Django را نصب کردیم و اولین Project خودمان را ایجاد کردیم. در این درس میخواهیم یکی از مهمترین مفاهیم Django را یاد بگیریم که تفاوت Project و App میباشد. این موضوع بسیار مهم است. چون از اینجا به بعد پروژه واقعی آزمون پلاس را مرحله به مرحله توسعه میدهیم و باید بدانیم هر قسمت از سایت را کجا قرار دهیم.
در پایان این درس، علاوه بر شناخت ساختار Project و App، اولین App واقعی پروژه سایت آموزش آنلاین آزمون پلاس را نیز ایجاد و به پروژه متصل میکنیم.
قبلا دیدیم که با دستور زیر Django یک Project ایجاد کرد:
Project را میتوانیم بهعنوان هسته اصلی و تنظیمات کلی سایت در نظر بگیریم. Project معمولاً شامل مواردی مانند موارد زیر میباشد:
در پروژه ما، Project اصلی فعلاً config نام دارد. بیایید ساختار آن را به یاد بیاوریم:
به بیان خیلی ساده App یک بخش یا قابلیت مشخص از پروژه است. یک سایت واقعی معمولاً از بخشهای مختلفی تشکیل شده است. مثلاً سایت آموزش آنلاین آزمون پلاس را در نظر بگیریم. ما احتمالاً به بخشهایی مانند اینها نیاز خواهیم داشت:
هرکدام از این قابلیتها میتوانند در یک App جداگانه پیادهسازی شوند. مثلاً:
ممکن است سوال کنید که چرا همه کدها را داخل یک App قرار ندهیم؟ پاسخ این است که با بزرگ شدن پروژه، مدیریت یک App بسیار بزرگ سخت خواهد شد. برای مثال فرض کنید همه این موارد را در یک App قرار دهیم:
بعد از مدتی فایلهای پروژه بسیار بزرگ و پیچیده میشوند. اما اگر آنها را به صورت منطقی جدا کنیم:
هر App مسئولیت مشخصی خواهد داشت که باعث میشود:
حالا میخواهیم از حالت تئوری خارج شویم و اولین App واقعی پروژه آزمون پلاس را بسازیم. در پروژه ما، اولین بخش مهم دورههای آموزشی است. بنابراین App مربوط به دورهها را با نام:
ایجاد میکنیم. برای این کار در Terminal و در همان پوشهای که manage.py قرار دارد، اجرا کنید:
بعد از اجرای دستور، ساختار پروژه به شکل زیر درمیآید:
حالا فایلهای داخل courses را یکییکی بررسی میکنیم.
models.pyاین فایل یکی از مهمترین فایلهای App است. Modelهای مربوط به این App را در این فایل تعریف میکنیم. مثلاً در App courses در آینده Modelهایی مانند اینها خواهیم داشت:
در درسهای مربوط به Model بهصورت کامل آن را ایجاد خواهیم کرد.
views.pyدر این فایل Viewهای مربوط به App را قرار میدهیم. View وظیفه دارد درخواست کاربر را پردازش کند. مثلاً در App courses ممکن است Viewهایی مانند اینها داشته باشیم:
admin.pyاین فایل برای تنظیم و مدیریت Django Admin مربوط به App استفاده میشود. بعداً وقتی Modelهای دوره را ایجاد کردیم، میتوانیم آنها را در Admin ثبت کنیم. بعد از این کار، مدیر سایت میتواند دورهها را از طریق پنل مدیریت Django مدیریت کند. در درس مربوط به Admin، این بخش را کامل پیادهسازی خواهیم کرد.
apps.pyاین فایل شامل تنظیمات مربوط به خود App است. وقتی Django App را ایجاد میکند، یک کلاس تنظیماتی برای آن ایجاد میشود. در حال حاضر لازم نیست چیزی در این فایل تغییر دهیم.
tests.pyاین فایل برای نوشتن تستهای خودکار App استفاده میشود. مثلاً در آینده میتوانیم بررسی کنیم که:
فعلاً تستی در این فایل نمینویسیم، اما در پروژههای واقعی تستنویسی اهمیت زیادی دارد.
migrationsبعد از ساخت App، پوشهای به نام migraions ایجاد میشود. این پوشه مربوط به Migrationهای Database است. وقتی Modelهای خودمان را تغییر میدهیم، Django میتواند این تغییرات را به Migration تبدیل کند. در درس مربوط به Model و Database این موضوع را کاملاً عملی انجام خواهیم داد.
__init__.pyاین فایل در حال حاضر خالی است. وجود آن به Python کمک میکند تا پوشه courses را بهعنوان یک Package پایتونی شناسایی کند. که فعلاً نیازی به تغییر آن نداریم.
تا اینجا App را ساختهایم؛ اما یک مرحله مهم باقی مانده است. Django هنوز نمیداند که App courses بخشی از پروژه ماست. پس باید آن را در تنظیمات Project ثبت کنیم. برای این منظور فایل زیر را باز کنید:
قسمتی با نام:
را پیدا کنید.
در حالت اولیه چیزی شبیه این است:
حالا App خودمان را اضافه میکنیم تا از این لحظه Django بداند که courses یکی از Appهای پروژه است:
INSTALLED_APPS فهرستی از Appهایی است که Django باید آنها را در پروژه فعال و مدیریت کند. Django تعدادی App داخلی خودش را نیز بهصورت پیشفرض در این قسمت قرار داده است. برای مثال:
مربوط به پنل مدیریت Django است. و:
مربوط به سیستم Authentication و کاربران است. ما نیز Appهای خودمان را به این فهرست اضافه میکنیم.
حالا میخواهیم مطمئن شویم App ما واقعاً کار میکند. فایل:
را باز کنید و کد موجود را به این شکل تغییر دهید:
این View فعلاً فقط یک متن ساده برمیگرداند. اما یک مشکل داریم: هنوز هیچ URLای برای این View تعریف نکردهایم. بنابراین کاربر نمیتواند به آن دسترسی پیدا کند. در اینجا با یکی از مفاهیم مهم Django یعنی URL Routing روبهرو میشویم.
بهتر است URLهای هر App را در خود همان App مدیریت کنیم. بنابراین داخل پوشه courses یک فایل جدید ایجاد کنید:
و داخل آن بنویسید:
اینجا:
یعنی وقتی این URL درخواست شد، View مربوط به course_list اجرا شود.
حالا باید URLهای courses را به URLهای اصلی Project متصل کنیم. فایل:
آن را به شکل زیر تغییر دهید:
بیایید کل مسیر را مرور کنیم. کاربر این آدرس را وارد میکند:
Django ابتدا به config/urls.py مراجعه میکند. در آنجا داریم:
بنابراین Django میگوید: “درخواست مربوط به /courses/ است؛ ادامه مسیر را در courses/urls.py بررسی کن.” سپس وارد این فایل میشود:
بنابراین View زیر اجرا میشود:
و Response به مرورگر برمیگردد. این اولین نمونه عملی از معماری Django است که در درس قبل درباره آن صحبت کردیم. الان اگر در نوار آدرس مرورگر بنویسید:
http://127.0.0.1:8000/courses/
با صفحه لیست دورهها مواجه خواهید شد که انتظارش را داشتید:
در پایان این بخش، ساختار پروژه ما تقریباً به شکل زیر است:
در ساختار پروژه مشاهده میکنید که پوشهای با نام migrations وجود دارد. migration در django مکانیزمی است که تغییرات مربوط به ساختار دیتابیس را مدیریت میکند. زمانی که در پروژه modelهایی ایجاد یا تغییر میدهیم، django میتواند این تغییرات را به migration تبدیل کند تا ساختار دیتابیس نیز مطابق مدلها ایجاد یا بهروزرسانی شود. فعلا فقط کافیست با مفهوم migration آشنا شوید. نحوه کار با makemigrations و migrate را در مبحث Model و Database بهصورت کامل یاد خواهیم گرفت.
در درس بعدی وارد URL Routing و Viewها بهصورت عمیقتر میشویم و صفحات مختلف سایت را ایجاد میکنیم؛ از جمله صفحه لیست دورهها و صفحه جزئیات یک دوره.
رفتن به درس بعدیدیتابیس Database و مدل Model در جنگو از درس قبل به خاطر دارید که آطلاعات دورهها به صورت ثابت داخل
طراحی قالب سایت با HTML، CSS و Tailwind CSS تا اینجا با ساختار اصلی Django، URL، View و Template آشنا
Template و رابط کاربری در Django در سه درس قبلی، با ساخت پروژه، ساختار Django، URL و View آشنا شدیم.
URL و View در جنگو در درسهای قبل با Django آشنا شدیم، محیط مجازی را ساختیم، Django را نصب کردیم
ساختار Project و App در Django در درس قبل با Django آشنا شدیم، محیط مجازی ساختیم، Django را نصب کردیم
شروع کار با Django در دوره آموزش جامع پایتون با مفاهیمی مانند متغیرها، شرطها، حلقهها، توابع، کلاسها، فایلها و کار
عملیات CRUD درSQLite در بخش قبل با مفهوم پایگاه داده، SQLite و نحوه اتصال پایتون به پایگاه داده آشنا شدیم.
اتصال به پایگاه داده (Database) در پایتون وقتی یک برنامه اطلاعاتی را از کاربر دریافت میکند، معمولاً لازم است این
مدیریت خطا (Error Handling) در پایتون در هنگام اجرای برنامه، ممکن است کاربر ورودی نامناسبی وارد کند یا برنامه با
کار با فایل، ماژول، پکیج و محیط مجازی در پایتون در پروژههای واقعی، معمولاً همهی کدها را در یک فایل
کپسولهسازی (Encapsulation) در پایتون فرض کنید کلاسی برای حساب بانکی نوشتهاید. اگر هر کسی بتواند موجودی حساب را مستقیماً تغییر
وراثت و مفاهیم پیشرفته شی گرایی تا اینجا یاد گرفتهاید که چگونه با استفاده از کلاس (Class) و شی (Object)
کلاس و شیء در پایتون (Object-Oriented Programming) تا اینجا با متغیرها، شرطها، حلقهها، توابع و ساختارهای داده در پایتون آشنا
تابع لامبدا (Lambda Function) در پایتون گاهی اوقات فقط به یک تابع خیلی کوچک نیاز داریم؛ تابعی که قرار است
توابع در پایتون اگر هنگام برنامهنویسی مجبور شوید یک قطعه کد را بارها تکرار کنید، برنامه شما طولانی، شلوغ و
مجموعه (Set) در پایتون به زبان ساده، Set مجموعهای از عناصر منحصربهفرد (Unique) است که ترتیب مشخصی ندارد و اجازه
دیکشنری در پایتون تا اینجا با لیست (List) و تاپل (Tuple) آشنا شدیم که هر دو مجموعهای از دادهها را
تاپل (Tuple) در پایتون بعد از آشنایی با لیست (List)، نوبت به یکی دیگر از ساختارهای داده در پایتون یعنی
لیست (List) در پایتون پرکاربردترین ساختار داده تا اینجا یاد گرفتید که هر متغیر فقط یک مقدار را در خود
ساختارهای داده در پایتون در برنامههای واقعی معمولاً با یک داده سروکار نداریم، بلکه باید تعداد زیادی اطلاعات را ذخیره
حلقههای تکرار در پایتون (Python Loops) فرض کنید معلم میخواهد نمرات ۳۰ دانشآموز را از کاربر دریافت کند. اگر حلقه
عملگرهای مقایسهای (Comparison Operators) تا اینجا یاد گرفتیم که با عملگرهای محاسباتی میتوانیم اعداد را با هم جمع، تفریق و…
دریافت ورودی از کاربر در پایتون (Python Input) تا اینجا یاد گرفتیم که چگونه مقدار یک متغیر را خودمان داخل
عملگرهای محاسباتی در پایتون (Arithmetic Operators) تقریباً تمام برنامهها به انجام محاسبات نیاز دارند؛ از جمع و تفریق ساده گرفته
کار با رشتهها در پایتون (Python Strings) مدیریت و پردازش متنها در برنامهها در دنیای برنامهنویسی، اطلاعات همیشه عدد و
متغیرها در پایتون (Python Variables) اولین قدم برای ذخیره و پردازش اطلاعات تصور کنید یک برنامه مینویسید که قرار است
شروع برنامه نویسی با پایتون ساخت اولین پروژه (Hello World) فهرست مطالب بعد از نصب Python چه کاری انجام دهیم؟
آموزش نصب پایتون و ابزارهای موردنیاز (راهنمای کامل برای ویندوز) اگر تصمیم گرفتهاید برنامهنویسی را یاد بگیرید، احتمالاً نام زبان
الگوهای کندل استیک پیشرفته: راهنمای جامع برای معاملهگران حرفهای الگو های کندل استیک پیشرفته (یا به بیان دیگر الگوهای شمعی
آیلتس جنرال یا آکادمیک؟ کدام را باید انتخاب کنیم؟ آیا میدانید که انتخاب اشتباه بین آیلتس آکادمیک و جنرال میتواند
دانلود رایگان نمونه سوالات آزمون PTE جنرال اگر تصمیم گرفتهاید با هدف مهاجرت به یک کشور انگلیسی زبان، در آزمون
معرفی آزمون های زبان انگلیسی معتبر در ایران| کدام یک بهتر است؟ اگه قصد ادامه تحصیل یا مهاجرت داشته باشید،
بهترین روشهای آمادگی برای آزمون تافل چگونه برای آزمون تافل آماده شویم؟ آیا شما هم قصد دارید برای کسب نمره
چگونه در خارج از کشور برای آزمون آیلتس ثبت نام کنیم؟ اگر قصد مهاجرت تحصیلی یا کاری دارید، احتمالاً نام
آزمون GRE مناسب چه رشتههایی است؟ اگر قصد ادامه تحصیل در مقاطع کارشناسی ارشد یا دکترا در دانشگاههای بینالمللی را
بهترین نمونه سوالات اسپیکینگ تافل هوم ادیشن آزمون تافل هوم ادیشن این روزها یکی از پرطرفدارترین گزینهها برای سنجش مهارت
نحوه ثبت نام در آزمون دولینگو در ایران به صورت کامل نحوه ثبت نام در آزمون دولینگو در ایران چگونه
هزینه آزمون GRE در ایران چقدر است؟ اگر قصد مهاجرت تحصیلی دارید، احتمالاً نام آزمون GRE به گوشتان خورده است.
راهنمای کامل ثبتنام و پرداخت هزینه آزمون PTE در ترکیه برای متقاضیان ایرانی آزمون PTE (Pearson Test of English) یکی از
ووچر آزمون چیست و چگونه میتوان آن را تهیه کرد؟ ثبتنام در آزمونهای بینالمللی مانند TOEFL، GRE، PTE، GMAT، IELTS
بهترین تکنیک های لیسنینگ آیلتس برای کسب نمره بالا آزمون آیلتس (IELTS) یکی از معتبرترین آزمونهای ارزیابی مهارت زبان انگلیسی
آزمون پلاس مرجع آموزش برنامهنویسی، هوش مصنوعی، شبکه، نمونه سؤالات کنکورهای کامپیوتر، آزمونهای زبان دکتری و مدارک بینالمللی فناوری اطلاعات است. با ارائه آموزشهای تخصصی، منابع آموزشی و راهنمای آزمونها، به دانشجویان و متخصصان کمک میکنیم تا مهارتهای خود را توسعه داده و در مسیر موفقیت تحصیلی و شغلی گام بردارند.