جشنواره ۵۰٪ تخفیف فرانش به مدت محدود

جشنواره ۵۰٪ تخفیف فرانش محدود

0 روز 0 ساعت 0 دقیقه 0 ثانیه

شروع یادگیری

آموزش جنگو جامع

آموزش جنگو مقدماتی از صفر به زبان ساده

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

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

پیش از شروع،

می‌شنوم و فراموش می‌کنم. می‌بینم و به خاطر می‌سپارم. انجام می‌دهم و یاد می‌گیرم.

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

دوره‌های مرتبط در فرانش

 

چرا جنگو؟

جنگو (Django) یک فریمورک تحت وب است که به زبان پایتون (Python) نوشته شده است. یک وب فریمورک، نرم‌افزاری است که می‌توانیم با آن سایت‌، اپلیکیشن‌ و سرویس‌های تحت وب بسازیم. این نرم‌افزار مجموعه‌ای از ابزار و قابلیت‌ها را در اختیارمان قرار می‌دهد تا با آنها بسیاری از مسائل رایجِ توسعه‌ی تحت وب را حل کنیم، مثل قابلیت‌های امنیت، دسترسی به پایگاه داده، Sessionها، پردازش Template، روتینگ URL، Internationalization، Localization و غیره.

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

اما چه چیزی جنگو را خاص می‌کند؟ اولین نکته اینکه یک فریمورک تحت وب پایتونی است، که به شما این امکان را می‌دهد از مجموعه‌ای بزرگ از کتابخانه‌های متن‌باز استفاده کنید. در ریپازیتوری Python Package Index می‌توانید بیش از 116 هزار پکیج پیدا کنید. پس اگر لازم باشد مسئله‌ای خاص را حل کنید، به احتمال زیاد کسی قبلاً کتابخانه‌ای برایش ساخته است.

جنگو یکی از معروف‌ترین فریمورک‌های تحت وبِ نوشته‌شده به زبان پایتون است. مطمئناً با مجموعه‌ای وسیع، از قابلیت‌های آماده‌ی استفاده‌ای که دارد، کامل‌ترین فریمورک پایتون نیز هست. قابلیت‌هایی مثل وب سرور Standalone برای توسعه و تست، کش کردن (Caching)، سیستم Middleware، ORM، موتور قالب (Template Engin)، پردازش فرم (Form Processing) و واسطی دارای ابزارهای Unit Testing پایتون.

جنگو به صورت Battery Included عرضه شده است. یعنی دارای اپلیکیشن‌های توکاری مثل سیستم احراز هویت (Authentication)، واسط ادمین برای ساخت خودکار صفحاتی برای عملیات‌های GRUD، ساخت فیدهای Syndication (RSS/Atom) و سایت‌مپ (Sitemap) است. جنگو حتی دارای یک فریمورک توکارِ سیستم اطلاعات جغرافیایی (Geographic Information System) (GIS) نیز است.

Django Software Foundation از تولید جنگو پشتیبانی می‌کند. جنگو از شرکت‌هایی مثل JetBrains و Instagram حایت مالی دریافت می‌کند. تقریباً زمان زیادی از انتشار جنگو می‌گذرد. بیش از 12 سال است که تحتِ تولیدِ فعال است و این مدت زمانِ نسبتاً طولانی، نشان‌دهنده‌ی فریمورکی کامل، قابل اطمینان و امن است.

 

چه کسانی از جنگو استفاده می‌کنند؟

برای اینکه بدانید می‌خواهید با جنگو چه‌کار کنید، خوب است بدانید که چه کسانی از آن استفاده می‌کنند. این‌ها مثال‌هایی از سایت‌هایی مهمند که از جنگو استفاده می‌کنند: Instagram، Disqus، Mozilla، Bitbucket، National Geographic وLast.fm.

برای دیدن مثال‌های بیشتر به پایگاه‌داده‌ی Django Sites سری بزنید. لیستی شامل بیش از 5 هزار سایت را در آن می‌بینید که از جنگو استفاده کرده‌اند.

سال گذشته در کنفرانس Django Under The Hood 2016، Carl Meyer، برنامه‌نویس Core جنگو و کارمند اینستاگرام، درباره‌ی جنگو صحبت کرد. او توضیح داد که چطور اینستاگرام از جنگو در مقیاسی بزرگ استفاده می‌کند و جنگو موجب رشد آنها شده است. صحبت‌هایش یک ساعتی طول کشید، و اگر مشتاق یادگیری هستید، موضوعات آموزنده‌ی بسیاری می‌شنوید.

 

آموزش نصب جنگو

اولین گام این است که برنامه‌هایی را در سیستم‌مان نصب کنیم تا بتوانیم از جنگو استفاده کنیم. در ابتدا باید Python، Virtualenv و Django را نصب کنیم.

راه اندازی اولیه جنگو

Python: اول باید پایتون را نصب کنیم.
Virtualenv: بعد از آن باید Virtual Environments را نصب کنیم، تا بتوانیم پروژه‌های پایتون و جنگو را ایزوله کنیم.
Django: بعد از آن جنگو را درون یک محیط مجازی (Virtual Environment) نصب می‌کنیم. اینطور می‌توانیم پروژه‌مان را ایزوله کنیم.

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

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

استفاده از آن بسیار ساده است. خودتان می‌بینید!

نصب Python 3.7.4

اولین کار نصب آخرین نسخه‌ی پایتون است. این نسخه در حال حاضر (اکتبر 2019) Python 3.7.4 است. اگر زمانی که می‌خواهید آن را نصب کنید، نسخه‌ی جدیدتری موجود بود، از آن استفاده کنید.

دلیل اینکه از پایتون 3 استفاده می‌کنیم، این است که بیشتر کتابخانه‌های مهم پایتون به پایتون 3 انتقال یافته‌اند. علاوه بر آن، نسخه‌ی Django 2.x از پایتون 2 پشتیبانی نمی‌کند. بنابراین استفاده از پایتون 3 بهتر است.

به www.python.org بروید و وارد صفحه‌ی دانلود Python 3.7.4 شوید. Scroll کنید تا فایل‌های دانلود را ببینید:

یدانلود نسخه ویندوز Python 3.6.2

با توجه به نسخه‌ی ویندوز (اگر ویندوز دارید)، نسخه‌ی مناسب را انتخاب کنید. اگر نمی‌دانید چه نسخه‌ای مناسب شماست، احتمالاً بهتر باشد Windows x86-64 executable installer را دانلود کنید.

به پوشه‌ی Downloads بروید، روی فایل Installer راست کلید و Run as administrator را انتخاب کنید.

Run as administrator

حتماً گزینه‌ی Add Python 3.6 to PATH را انتخاب و سپس روی Install Now کلیک کنید.

Install Now

پس از اتمام نصب، باید شکل زیر را ببینید:

نصب موفقیت آمیز

حالا برنامه‌ی Command Prompt را جست‌وجو و باز کنید:

Command Prompt

برای اینکه مطمئن شویم همه‌چیز به درستی کار می‌کند، دستور زیر را تایپ کنید:

python --version

کد زیر را در خروجی می‌بینید:

Python 3.6.2

عالی است! پایتون آماده‌ی استفاده و اجراست. گام بعدی: Virtual Environments!

نصب Virtualenv

در گام بعدی، می‌خواهیم از pip برای نصب Virtualenv استفاده کنیم. pip ابزاری برای مدیریت و نصب پکیج‌های پایتون است.

دستور زیر را در Command Prompt اجرا کنید:

pip install virtualenv

تاکنون تمام نصب‌ها در کل سیستم صورت می‌گرفت. از اینجا به بعد، هرچیزی که نصب می‌کنیم (حتی جنگو)، در یک محیط مجازی (Virtual Environment) نصب خواهد شد.

اینطور به آن نگاه کنید: برای هر پروژه‌ی جنگویی که می‌سازید، ابتدا باید یک Virtual Environment برایش درست کنید. انگار برای هر پروژه‌ی جنگو یک Sandbox داشته باشیم. اینطور می‌توانید بدون خرابکاری، چیزهای مختلف را امتحان و پکیج‌هایی را نصب و حذف کنید.

اول یک پوشه برای پروژه‌مان می‌سازیم. چون این اولین پروژه و فقط به منظور تست است، لازم نیست نامی خاص برایش انتخاب کنیم. نامش را myproject می‌گذاریم.

mkdir myproject
cd myproject

ساخت پوشه myproject

این پوشه در بالاترین سطح قرار دارد و همه‌ی فایل‌های مربوط به پروژه‌ی جنگو (مثل محیط مجازی مربوط به این پروژه) در این پوشه قرار می‌گیرند.

در گام بعد اولین Virtual Environment خودمان را می‌سازیم و جنگو را در آن نصب می‌کنیم.

بهترین زبان‌های برنامه نویسی

در پوشه‌ی myproject:

virtualenv venv

Virtualenv

Virtual Environment ساخته شد. حالا قبل از استفاده از آن، باید فعالش کنیم:

venv\Scripts\activate

اگر مثل شکل زیر در ابتدای دستورات (venv) را ببینید، یعنی همه‌چیز به خوبی کار می‌کند:

Virtualenv فعال

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

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

با کد زیر می‌توانید محیط venv را غیرفعال کنید:

venv\Scripts\deactivate.bat

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

نصب Django 1.11.4

بسیار ساده است. حالا که venv را فعال کرده‌ایم، برای نصب جنگو کد زیر را اجرا کنید:

pip install django

pip install django

حالا آماده‌ی کاریم!

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

 

یک پروژه جدید بسازید

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

django-admin startproject myproject

واسط دستوری django-admin به صورت خودکار با جنگو نصب می‌شود.

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

در حال حاضر، پوشه‌ی myproject به شکل زیر است:

myproject/                  <-- higher level folder
 |-- myproject/             <-- django project folder
 |    |-- myproject/
 |    |    |-- __init__.py
 |    |    |-- settings.py
 |    |    |-- urls.py
 |    |    |-- wsgi.py
 |    +-- manage.py
 +-- venv/                  <-- virtual environment folder

ساختار اولیه‌ی پروژه از 5 فایل تشکیل شده است:

  • py: یک Shourtcut برای واسط دستوری django-admin است. می‌توانیم از آن برای اجرای دستوراتِ مدیریتی مربوط به پروژه استفاده کنیم. از آن برای اجرای سرور، تست، ساخت Migration و بسیاری دیگر استفاده می‌کنیم.
  • py: این فایل خالی به پایتون می‌گوید که این پوشه یک پکیج پایتون است.
  • py: این فایل حاوی تمامی کانفیگریشن‌های پروژه است. بسیار به این فایل ارجاع می‌دهیم!
  • py: این فایل مسئول Map کردن روت‌ها و مسیرهای پروژه است. برای مثال، اگر بخواهیم چیزی را در URL /about/ نمایش دهیم، باید آن را اول در این فایل Map کنیم.
  • py: این فایل یک واسط دروازه‌ی (Gateway Interface) ساده برای توسعه است. فعلاً نگرانش نباشید و آن را به حال خود رها کنید.

یک وب سرور ساده در جنگو نصب شده است. این سرور مناسب است و لازم نیست در حین فرایند توسعه سرور دیگری را برای اجرای محلی پروژه نصب کنیم. می‌توانیم آن را با اجرای کد زیر تست کنیم:

python manage.py runserver

فعلاً می‌توانید خطاهای Migration را نادیده بگیرید. بعداً به آنها می‌پردازیم.

URL زیر را در مرورگرتان باز کنید. باید شکل زیر برایتان نمایش داده شود:

URL: http://127.0.0.1:8000

برای متوقف کردن سرور، CTRL+BREAK را بزنید.

آموزش react natve

 

Appهای جنگو

در فلسفه‌ی جنگو، دو مفهوم مهم داریم:

  • app: یک اپلیکیشن تحت وب است که کاری انجام می‌دهد. یک app معمولاً از مجموعه‌ی Modelها (جدول‌های پایگاه داده)، Viewها، Templateها و Testها تشکیل شده است.
  • project: مجموعه‌ای از appها و کانفیگریشن‌هاست. یک پروژه می‌تواند حاوی یک یا چند app باشد.

باید درنظر داشته باشید که بدون project نمی‌توانید یک app جنگو را اجرا کنید. وب‌سایت‌هایی ساده مثل بلاگ را می‌توانید در یک app بنویسید و آن را blog یا weblog بنامید.

اپلیکیشن جنگو

جنگو مفهومی به نام App دارد. ایده‌ی اصلی این است که یک project را به چندین ماژول (یا app) تقسیم کنیم. در تصویر، مربع سبز یک project جنگو است. دایره‌های زرد appهای داخلی و دایره‌های قرمزappهای خارجی را نشان می‌دهند که با استفاده از pip نصب شده‌اند.

 

این روشی برای سازماندهی سورس‌کد (Source Code) است. در ابتدا خیلی بدیهی نیست که چه چیزی App است و چه چیزی نیست. چطور کد را سازماندهی کنیم و …. اما فعلاً نگران این مسائل نباشید.! بیایید فعلاً درباره‌ی API جنگو و مسائل پایه بیشتر یاد بگیریم.

خب! بیایید یک Web Forum یا Discussion Board ساده بسازیم. برای ساخت اولین appمان، به پوشه‌ای که فایل manage.py در آن قرار دارد بروید و دستور زیر را اجرا کنید:

django-admin startapp boards

دقت کنید که این بار از دستور startapp استفاده کردیم.

این دستور ساختار دایرکتوری زیر را به ما نشان می‌دهد:

myproject/
 |-- myproject/
 |    |-- boards/                <-- our new django app!
 |    |    |-- migrations/
 |    |    |    +-- __init__.py
 |    |    |-- __init__.py
 |    |    |-- admin.py
 |    |    |-- apps.py
 |    |    |-- models.py
 |    |    |-- tests.py
 |    |    +-- views.py
 |    |-- myproject/
 |    |    |-- __init__.py
 |    |    |-- settings.py
 |    |    |-- urls.py
 |    |    |-- wsgi.py
 |    +-- manage.py
 +-- venv/

خب، بیایید اول ببینیم که هر فایل چه کاری انجام می‌دهد:

  • migrations/: جنگو در این پوشه فایل‌هایی می‌سازد تا تغییراتی را، که در فایل py اعمال می‌کنید، پیگیری کند. اینطور پایگاه داده و فایل models.py هماهنگ باقی می‌مانند.
  • py: یک فایل کانفیگریشن برای app توکار جنگو به نام Django Admin است.
  • py: فایل کانفیگریشن خود app است.
  • py: در اینجا موجودیت‌های اپلیکیشن وب‌مان را تعریف می‌کنیم. جنگو به صورت خودکار Modelها را به جداول پایگاه داده مدل می‌کند.
  • py: از این فایل برای نوشتن تست‌های Unit برای app استفاده می‌شود.
  • py: این فایلی است که در آن چرخه‌ی درخواست/پاسخ را در اپلیکیشن تحت وب مدیریت می‌کنیم.

دقت کنید که اولین appمان را ساختیم. حالا می‌خواهیم اولین project را برای استفاده از App کانفیگر کنیم.

برای این کار، settings.py را باز و متغیر INSTALLED_APPS را پیدا کنید:

settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

همان‌طور که مشاهده می‌کنید، جنگو از قبل 6 app توکار نصب‌شده دارد. این appها قابلیت‌هایی را ارائه می‌کنند، که بیشتر اپلیکیشن‌های تحت وب به آن نیاز دارند. مثل احراز هویت، Sessionها، مدیریت فایل‌های استاتیک (تصاویر، فایل‌های جاوا اسکریپت، CSS و … ) و امثال این‌ها.

کاری به این appها نداشته باشید و فقط app خودمان (boards) را به لیست INSTALLED_APPS اضافه کنید:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'boards',
]

اگر تصویر دایره‌ها و مربع را به خاطر داشته باشید، boards دایره‌ی زرد است، django.contrib.admin و django.contrib.auth و … دایره‌های قرمز هستند.

آموزش React Native

 

Hello, World!

بیایید اولین view را بنویسیم. می‌خواهیم ببینیم که ساخت یک صفحه‌ی جدید در جنگو چگونه است.

فایل views.py موجود در boards را باز کنید و کد زیر را به آن اضافه کنید:

views.py

from django.http import HttpResponse

def home(request):
    return HttpResponse('Hello, World!')

Viewها توابعی در پایتون هستند که یک شئ HttpRequest را می‌گیرند و یک شئ HttpResponse را برمی‌گردانند. یک request را به عنوان پارامتر ورودی می‌گیرند و یک response را به عنوان خروجی برمی‌گردانند. این جریانی است که باید به خاطر داشته بسپارید!

در اینجا یک View ساده به نام Home ساختیم که یک پیغام Hello, World! را برمی‌گرداند.

حالا باید به جنگو بگوییم که کِی این View را نمایش دهد. باید در فایل urls.py این کار را انجام دهیم:

urls.py

from django.conf.urls import url
from django.contrib import admin

from boards import views

urlpatterns = [
    url(r'^$', views.home, name='home'),
    url(r'^admin/', admin.site.urls),
]

اگر کد بالا را با فایل urls.py قبلی مقایسه کنید، می‌بینید که کد زیر به آن اضافه شده است:

و با استفاده از from boards import views ماژول Views را به داخل boards ایمپورت کرده‌ایم.

جنگو برای مچ کردن URL درخواستی از regex استفاده می‌کند. برای Home View، از ^$ استفاده کردیم، که آن را با یک مسیر خالی مچ می‌کند، که آن مسیر Homepage است (url: http://127.0.0.1:8000). اگر می‌خواستیم با URL http://127.0.0.1:8000/homepage/ مچ شود، کد زیر نتیجه‌ی آن می‌شد:

url(r'^homepage/$', views.home, name='home')

بیایید نتیجه را ببینیم:

python manage.py runserver

در مرورگر آدرس http://127.0.0.1:8000 را باز کنید:

Hello, World!

همین بود! اولین View خودتان را ساختید.

 

نتیجه‌گیری

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

 

فیلم آموزش جنگو Django

 

در صورتی که آموزش جنگو برای شما مفید بوده است:

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

مرتضی شایق

مرتضی شایق

مدیر دیجیتال مارکتینگ

فعال در دیجیتال مارکتینگ در تخصص‌های: SEO (بهینه‌سازی سایت برای موتورهای جستجوگر)، SEM (بازاریابی در موتورهای جستجوگر)، UX (تجربه کاربری)

بدون دیدگاه

دیدگاهتان را بنویسید