دیتابیس Database و مدل Model در Django
دیتابیس Database و مدل Model در جنگو از درس قبل به خاطر دارید که آطلاعات دورهها به صورت ثابت داخل
در سه درس قبلی، با ساخت پروژه، ساختار Django، URL و View آشنا شدیم. حالا میخواهیم کاری کنیم که بهجای اینکه View فقط یک متن ساده به مرورگر برگرداند، یک صفحه HTML واقعی به کاربر نمایش دهد.
Template همان بخشی است که ظاهر و محتوای صفحهی وب را مشخص میکند. مثلاً فرض کنید میخواهیم صفحهای برای سایت آزمون پلاس داشته باشیم که بنویسد:
به آزمون پلاس خوش آمدید
این صفحه را با HTML میسازیم و آن را داخل Template قرار میدهیم. پس Template یعنی فایل HTML که Django برای نمایش به کاربر استفاده میکند.
ابتدا در پروژهی خودمان یک پوشه به نام templates میسازیم. یعنی در کنار فایل manage.py؛ و داخل این پوشه یک فایل با نام home.html ایجاد میکنیم. حالا داخل home.html فعلاً یک HTML ساده مینویسیم:
آزمون پلاس
به آزمون پلاس خوش آمدید
مرجع آموزش و آزمون
تا اینجا فقط یک فایل HTML ساختهایم. اما Django هنوز نمیداند این فایل کجاست. باید به جنگو بگوییم که پوشهی templates را پیدا کند.
فایل setting.py پروژه زیر را باز کنید. در آن قسمت TEMPLATES را پیدا کنید. بخش مهم آن چیزی شبیه این است:
ما باید مسیر پوشهی templates را در DIRS قرار دهیم. پس آن را به این شکل تغییر میدهیم:
این خط به به Django میگوید که اگر دنبال Template هستی، داخل پوشهی templates در ریشهی پروژه جستجو کن.
اگر یادتان باشد در درس گذشته در اپلیکیشنمان در فایل view.py یک ویو به نام home ایجاد کردیم:
حالا میخواهیم بهجای HttpResponse، فایل home.html را نمایش دهیم. برای این کار از تابع ()render استفاده میکنیم:
خط آخر یعنی فایل home.html را پیدا کن، آن را پردازش کن و نتیجهی HTML آن را به مرورگر برگردان. حواستان باشد render از django.shortcuts ایمپورت شده باشد.
سرور را اجرا کنید:
بعد در مرورگر وارد شوید:
اگر همهچیز درست باشد، باید این صفحه را ببینید:
تا اینجا Template ما فقط اطلاعات ثابت داشت. اما در سایت واقعی، اطلاعات معمولاً باید از View بیاید. مثلاً View میتواند نام سایت را مشخص کند:
اما یک سؤال مهم: چطور name را از View به Template بفرستیم؟
برای این کار از چیزی به نام Context استفاده میکنیم.
Context در جنگو اطلاعاتی است که از View به Template ارسال میشود. برای مثال:
def home(request):
name = "آزمون پلاس"
context = {
'name': name
}
return render(request, 'home.html', context)
name سمت چپ نامی است که Template با آن به اطلاعات دسترسی پیدا میکند. و name سمت راست متغیری است که در View داریم.
حالا در home.html مینویسیم:
علامتهای {{}} در Template برای نمایش مقدار متغیرها استفاده میشوند. بنابراین {{name}} یعنی اینکه مقدار متغیر name را نمایش بده. در نتیجه مرورگر نمایش میدهد: به آزمون پلاس خوش آمدید
Context فقط برای یک متغیر نیست و ما میتوانیم اطلاعات بیشتری به تمپلیت بفرستیم. به فایلها و کدهای زیر و نمایش خروجی در مرورگر توجه کنید:
نامی که داخل Context قرار میدهیم، همان نامی است که در Template استفاده میکنیم.
context = {
'site_name': name
}
در Template باید بنویسیم:
{{ site_name }}
نه:
{{ name }}
Django فقط HTML معمولی را نمایش نمیدهد؛ بلکه داخل Template میتوانیم از دستورات مخصوص Django هم استفاده کنیم. به این قابلیت میگوییم: Django Template Language (DTL)
سه موردی که فعلاً بیشتر با آنها کار داریم، نمایش متغیرها، شرطها و حلقهها هستند. مورد اول را تا اینجا یاد گرفتید و در ادامه به موارد دیگر میپردازیم.
حالا فرض کنیم میخواهیم فقط در صورتی پیام خاصی را نمایش دهیم که کاربر وارد سایت شده باشد. در Template از این ساختار استفاده میکنیم:
مثلاً:
{% if is_login %}
به آزمون پلاس خوش آمدید.
{% endif %}
در views.py:
def home(request):
is_login = True
context = {
'is_login': is_login
}
return render(request, 'home.html', context)
و در home.html:
{% if is_login %}
به آزمون پلاس خوش آمدید
{% endif %}
چون مقدار is_login برابر True است، پیام نمایش داده میشود.
میتوانیم حالت دیگری هم مشخص کنیم که در صورت لاگین نبودن کاربر، پیغام دهد که به حساب کاربری خود وارد شوید:
{% if is_login %}
خوش آمدید.
{% else %}
لطفاً وارد حساب کاربری خود شوید.
{% endif %}
مثل Python، میتوانیم چند حالت داشته باشیم:
{% if score >= 90 %}
عالی
{% elif score >= 70 %}
خوب
{% elif score >= 50 %}
قابل قبول
{% else %}
نیاز به تلاش بیشتر
{% endif %}
Template Language شبیه Python است، اما Python نیست. یعنی نباید انتظار داشته باشیم هر چیزی که در Python مینویسیم، مستقیماً در Template هم قابل استفاده باشد.
فرض کنید در سایت آزمون پلاس چند دوره داریم که در ویو تعریف شده است. در اینصورت برای نمایش لیست آنها در تمپلیت از دستور for به شکل زیر استفاده میکنیم:
فرض کنید سایت آزمون پلاس ۲۰ صفحه داشته باشد. اگر در همهی صفحات این قسمتها (یعنی هدر و فوتر و محتوای صفحه) را تکرار کنیم:
<html>
<head>...</head>
<body>
<header>...</header>
<!-- محتوای صفحه -->
<footer>...</footer>
</body>
</html>تا به اینجا پروژه ما فقط یک app با نام courses دارد. داخل پوشه templates که در پوشه courses قرار دارد، یک فایل با نام base.html بسازید و داخل آن کد زیر را بنویسید:
{% block title %}{% endblock %}
آزمون پلاس
{% block content %}
{% endblock %}
در اینجا دو block داریم:
{% block title %}{% endblock %}و:
{% block content %}
{% endblock %}اینها قسمتهایی هستند که صفحات دیگر میتوانند محتوای خودشان را داخلشان قرار دهند.
حالا home.html را به این شکل تغییر دهید:
{% extends 'base.html' %}
{% block title %}
صفحه اصلی
{% endblock %}
{% block content %}
به آزمون پلاس خوش آمدید
مرجع آموزش و آزمون
{% endblock %}
خط اول:
{% extends 'base.html' %}یعنی اینکه این صفحه از base.html استفاده میکند. به محتوای فایل base.html در پروژه آزمون پلاس توجه کنید:
حالا توجه کنید که چطور فایل home.html را با همان محتوای قبلی، تغییر دادیم:
فایل ویو view.py به همان شکل باقی میماند.
از این به بعد برای صفحات مختلف، دیگر لازم نیست html، head، header و footer را تکرار کنیم. مثلاً بعداً میتوانیم داشته باشیم:
templates/ ├── base.html ├── home.html ├── courses.html ├── about.html └── contact.html
در درس بعدی پیش از ادامه آموزش جنگو، قالب صفحات سایت را با کمک html و css و tailwind خواهیم ساخت.
رفتن به درس بعدیدیتابیس 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) یکی از معتبرترین آزمونهای ارزیابی مهارت زبان انگلیسی
آزمون پلاس مرجع آموزش برنامهنویسی، هوش مصنوعی، شبکه، نمونه سؤالات کنکورهای کامپیوتر، آزمونهای زبان دکتری و مدارک بینالمللی فناوری اطلاعات است. با ارائه آموزشهای تخصصی، منابع آموزشی و راهنمای آزمونها، به دانشجویان و متخصصان کمک میکنیم تا مهارتهای خود را توسعه داده و در مسیر موفقیت تحصیلی و شغلی گام بردارند.