چرا از جنگو استفاده کنیم؟
- یه ORM قوی داره
- سیستم احراز هویت آماده داره
- فرم هاش امکانات خوبی دارن
- ادمین آماده داره
- چند زبانه کردن سایت رو خیلی خوب پشتیبانی میکنه
- امنیتش هم بالاست
@djangolearn
جنگو قدیمی نمیشه؟
جنگو همیشه یه نمودار زمانبدی توی سایتش میزاره
و طبق نمودارش هر 8 ماه یکبار هم نسخه جدید منتشر میکنه
هر 3 سال یکبار هم نسخه LTS منتشر میکنه (نسخه با پشتیبانی طولانی)
عکس رو هم ببینید (از صفحه گیت هاب جنگو گرفتم)
از سال 2005 تا حالا commit هارو نشون میده.
جنگو تا امروز 2766 مشارکت کننده در توسعه اش داشته
✅همه اینها یعنی جامعه جنگو فعاله و حالا حالاها میشه ازش استفاده کرد
@djangolearn
برای استفاده از جنگو، بهتره virtual environments نصب کنیم
اگه از venv ها استفاده نکنیم، در لحظه نمی تونیم روی سیستمم مون چندتا نسخه از جنگو داشته باشیم.
البته venv مختص جنگو نیست. برای پکیج های پایتونی کاربرد داره.
سوال: آیا برای یادگیری جنگو حتما لازمه venv بسازیم؟
نه. لازم نیست
👈حتی توی کتاب طراح سایت پایه یازدهم هنرستان، ما venv نساختیم. و جنگو رو اصطلاحا به صورت global نصب کردیم.
چرا؟
چون خواستیم حجم کتاب کمتر باشه 😅
@djangolearn
برای نصب پکیج های پایتونی بهتره از علامت ~ استفاده کنیم.
فرض کنید آخرین نسخه LTS روی 5.2.13 هست.
وقتی شما بنویسید:
pip install django~=5.2.9
آخرین نسخه یعنی همون 5.2.13 نصب میشه.
توضیحات عکس رو ببین
@djangolearn
دستور ساخت پروژه جنگو چیه؟ startproject
اگه اسم پروژه django_project باشه. بهتره با دستور زیر پروژه بسازیم:
django-admin startproject django_project .
مهم 👈: نقطه رو بعد یه فاصله از اسم پروژه بزاری
باعث میشه که فولدر اضافی برای django_project نسازه.
توی عکس میگه، اگه نقطه نزاری اینجوری میشه
672
@djangolearn
جنگولرن
دستور ساخت پروژه جنگو چیه؟ startproject اگه اسم پروژه django_project باشه. بهتره با دستور زیر پروژه
می دونید چرا بعد از نصب جنگو، دستور django-admin رو سیستم میشناسه؟
این startproject رو دیدم، یادم افتاد حدودا 4 سال پیش یه ویدئو جالب ساختم.
و تغییراتی به پکیج جنگو دادم و به جای django-admin مینوشتم milad-admin 😬
عنوانش:
پشت صحنه pip install django
💯حتما ببینیدش، هنوزم جالبه. حتی برای دوستاتون بفرستید.
لینکش:
https://www.aparat.com/v/ofjc5
672
@djangolearn
🚨نقشه کابل های اینترنت زیر دریا
.
.
.
اشتباه نیومدی. اینجا جنگولرنه 💯
باور کن این عکس توی کتابه Django for Beginners هست
میخواد توضیح بده که اینترنت چطوری کار میکنه.
و در ادامه هم توضیح داده که وقتی یه سایت رو توی مرورگر باز میکنی چی میشه. (مفهوم dns و ip و http request و...)
در کل، بد نیست یه دوره نتورک پلاس بگذرونید. یه برنامه نویس هر چقدر بیشتر شبکه بدونه قوی تره. نتورک پلاس مفاهیم پایه رو میگه
13
@djangolearn
ساختار جنگو
این کتاب، بعد از اینکه توضیح داده فریمورک ها چطور کار میکنن.
ساختار جنگو رو توضیح داده 💯
ما هم توی کتاب طراح سایت، ساختار رو توضیح دادیم و فرایند دریافت و پاسخ به یک request رو توضیح دادیم.
البته ما اینقدر دیتارو یکجا به دانش آموز منتقل نکردیم. که گیج بشه.
حیف که اجازه انتشار کتاب رو نداریم.
@dangolearn
✅فایل های wsgi.py و asgi.py توی پروژه های جنگو به چه دردی میخورن؟
فایل wsgi از اول بود. من که از نسخه 1.8 جنگو دیدمش.
فایل asgi از نسخه 3 اضافه شده. چون یه سری قابلیت async اضافه شد.
✔️این دو تا فایل، سرور نیستن.
اولی مخفف اینه: Web Server Gateway Interface
دومی هم مخفف اینه: Asynchronous Server Gateway Interface
میدونید که runserver (که پروژه جنگو رو توی سیستم خودمون باهاش ران می کنیم) یه وب سرور کوچیک داخلی جنگو هست و همیشه میگن برای استفاده پروداکشن نیست.
در حالت پروداکشن از وب سرورهای حرفهای مثل Gunicorn یا Uvicorn یا چیزای دیگه استفاده میکنن.
👈این وب سرورها نمیدونن کد جنگو کجاست. ما کانفیگشون می کنیم و بهشون آدرس این فایلهارو میدیم. تا بتونن درخواست رو برای جنگو بفرستن و پاسخ رو به کاربر بدن.
در واقع این فایل ها Entry Point یا درگاه ورودی هستن. و به وب سرور میگن application کدومه. (کدشون رو ببین)
نقطه ضعف جنگو: هنوز کامل async نیست.
ولی فریمورکی مثل fastapi کاملا async رو هندل کرده.
اینکه جنگو async نیست، تا حالا برای من و خیلی های دیگه، مساله نبوده.
ولی به مرور دارن از این لحاظ بهترش میکنن.
یادت باشه runserver یه django command است. پایان
13
@djangolearn