ورود به دنیای جنگو قسمت ۱ | آشنایی با جنگو

2 ديدگاه

همان طور که می دانید، پایتون یک زبان چند پلتفرم است و از آن برای برنامه نویسی در پلتفرم های مختلف استفاده می شود.

یکی از زمینه هایی که پایتون در آن استفاده زیادی دارد، برنامه نویسی صفحات وب است. جنگو دو فریمورک قدرتمند برای

طراحی صفحات وب دارد : جنگو و فلسک. در این مقاله ما فریمورک جنگو را معرفی می کنیم و نقاط قوت و ضعف این فریمورک

رو بررسی می کنیم و در نهایت یک پروژه ساده را با جنگو پیاده سازی می کنیم.

جنگو چیست ؟

جنگو (django) یک فریمورک سطح باال و اپن سورس پایتون است که برای طراحی صفحات وب مورد استفاده قرار می گیرد. این

فریمورک برای توسعه backend سایت استفاده می شود و برای این کار از معماری mvc استفاده می کند. زمانی که شما یک

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

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

شمت اجازه می دهد بیشتر روی قسمت های خاص پروژه تمرکز کنید.

برنامه نویسی بک اند چیست ؟

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


اند برنامه نویس با استفاده از کدهای html ،css و javascript به پیاده سازی ظاهر سایت می پردازد. در واقع در برنامه نویسی


فرانت اند، کدنویسی قسمت هایی از سایت که برای کاربران قابل مشاهده است، انجام می شود.


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


در واقع این قسمت با داده های کاربران و سایت سر و کار دارد و دخیره داده ها در دیتابیس، پردازش روی داده ها و فراخوانی داده


ها از دیتابیس توسط این قسمت انجام می شود. برای برنامه نویسی این بخش از سایت از زبان ها و تکنولوژی ها مختلفی مانند

C#
JAVA
PYTHON
PHP

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

چرا جنگو گزینه مناسبی برای برنامه نویسی بک اند است ؟

جنگو با وجود گستردگی و پیچیدگی خاص خود، یکی از ساده ترین تکنولوژی های بک اند برای یادگیری و استفاده است. استفاده


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


علاوه بر این سینتکس آسان پایتون و جامعه پشتیبانی گسترده، جزو موارد دیگری هستند که جنگو را به یکی از بهترین


تکنولوژی ها برای توسعه وب اپلیکیشن ها تبدیل کرده است.

۱ – جامعه پشتیبانی قوی :

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

جنگو استفاده می کنند و شما می توانید مشکالت خود را در سایت هایی مانند stackoverflow یا girls Django مطرح کنید

و از سایر دولوپرها کمک بگیرید

۲ – الگوی معماری mvc :

جنگو از الگوی معماری mvc اختصاصی خود که MVT نام دارد استفاده می کند. استفاده از این معماری به شما اجازه می دهد تا


رابط کاربری خود را از منطق برنامه جدا کنید. این نوع معماری باعث کاهش پیچیدگی پروژه شما خواهد شد، به خصوص زمانی


که پروژه شما گسترده باشد.

۳ – امنیت بالا :

جنگو به صورت پیش فرض یک سری اقدامات امنیتی را برای افزایش امنیت وب سایت هایی که با این فریمورک توسعه داده می

شوند، انجام داده است. از جمله این اقدامات می توانیم به موارد زیر اشاره کنیم :

Cross site scripting(xss) protection 
Cross site request forgery (csrf) protection
SQL injection protection 
Host header validation 
Clickjacking protection

۴ – صفحه ادمین :

جنگو به صورت پیش فرض یک صفحه مدیریتی برای مدیریت سایت آماده کرده است که امکانات زیادی در اختیار ادمین قرار می

دهد. علاوه بر این امکانات پیش فرض، جنگو به شما اجازه می دهد این صفحه را شخصی سازی کنید و امکانات مدنظرتان را به

این صفحه اضافه کنید.

۵- اصل استفاده از Don’t Repeat Yourself :

فریمورک جنگو روی اصل DRY تاکید می کند، به این معنی که ” خودت را تکرار نکن ” . تکرار یک موضوع با اهمیت در موارد

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

شما را مجبور کند تا کدهای خود را تکرار نکنید. برای مثال در صفحات html شما، برخی قسمت ها مانند هدر و فوتر در اکثر

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

بود از آن صفحه ارث بری کنید. در این حالت شما دیگر نیازی به تکرار این کدها در همه صفحات خود نخواهید داشت.

۶ – کتابخانه های گسترده :

جنگو نیز همانند پایتون کتابخانه های زیادی دارد که به توسعه دهنده کمک می کنند کارهای خود را سریع تر پیش ببرد و همه

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

– auth.contrib.Django : این کتابخانه به شما اجازه می دهد تا authentication user خود را به راحتی پیاده

سازی کنید. برای مثال کارهایی مانند ثبت نام کاربران، ورود، خروج ، تغییر پسورد کاربران به صورت پیش فرض در این

کتابخانه وجود دارند و شما نیازی به پیاده سازی مجدد آن ها ندارید.

– framework rest Django : اگر شما نیاز به پیاده سازی API REST در پروژه خود داشته باشید، این کتابخانه

قدرتمند بهترین انتخاب برای شما خواهد بود.

شرکت هایی که از جنگو استفاده کرده اند ؟

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

استفاده کرده اند، می توانیم به کمپانی های زیر اشاره کنیم :

instagram
Spotify 
Dropbox 
Youtube 
Mozila 
The Washington Post 
Udemy

نصب جنگو :

اولین مرحله برای نصب جنگو این است که شما پایتون را روی سیستم خود نصب داشته باشید. اگر ندارید می توانید آن را از

طریق سایت رسمی پایتون دانلود کرده و نصب کنید. در مرحله دوم شما باید pip را روی سیستم نصب داشته باشید. در صورتی

که pip را نصب ندارید، می توانید از سایت رسمی آن فایل get-pip.py را دانلود کرده و سپس در ترمینال یا cmd به

دایرکتوری فایل مورد نظر رفته و با استفاده از دستور :

Python get-pip.py

آن را نصب کنید. در نهایت و پس از نصب pip ، می توانید به راحتی و با دستور

Pip install Django

جنگو را روی سیستم خود نصب کنید

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

برای شروع یک پروژه در جنگو می توانید در ترمینال یا cmd به دایرکتوری مد نظرتان بروید و با دستور

Django-admin startproject mysite

یک پروژه جنگو با نام مدنظرتان( در اینجا ما نام پروژه خود را mysite گذاشته ایم) را ایجاد کنید. این دستور یک دایرکتوری به

شکل زیر برای شما ایجاد می کند :

mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py

در اینجا پوشه mysite حاوی کل فایل های پروژه شما است. داخل این پوشه یک فایل به نام py.manage وجود دارد که به

شما اجازه می دهد تا با پروژه تعامل داشته باشید که در ادامه نحوه کار با آن را توضیح خواهیم داد. در کنار این فایل یک پوشه

دیگر هم نام با پروژه وجود دارد که حاوی فایل های اصلی پروژه مانند تنظیمات پروژه و url های اصلی پروژه است.

سرور جنگو :

جنگو یک سرور برلی فاز توسعه دارد که برای اجرای پروژه و انجام کارهای مربوط به فاز توسعه پروژه استفاده می شود. با استفاده

از این سرور شما در فاز توسعه نیاز به سرور محلی دیگری نخواهید داشت. برای اجرای پروژه روی این سرور می توانید در ترمینال

یا cmd به پوشه حاوی فایل py.manage بروید و با استفاده از دستور :

Python manage.py runserver

پروژه خود را روی سرور جنگو اجرا کنید. همان طور که مشاهده می کنید، این کار توسط فایل py.manage انجام می شود. این

دستور سرور جنگو را روی آدرس /۸۰۰۰:۱٫۰٫۰٫۱۲۷://http در دسترس شما قرار می دهد. با رفتن به این آدرس روی

مرورگرتان می توانید صفحه مربوط به اجرای سرور جنگو را مشاهد کنید

ساخت یک app در پروژه :

هر پروژه جنگو می تواند شامل چند اپ جنگو باشد و هر اپ جنگو می تواند در پروژه های مختلفی استفاده شود. برای تفهیم این

موضوع به این مثال توجه کنید. فرض کنید شما یک پروژه سایت فروشگاهی دارید که برای آن سه اپ جنگو نوشته شده است. یک

اپ برای خود فروشگاه، یکی برای پرداخت های مشتریان و یک اپ برای وبالگ جانبی فروشگاه. در این حالت شما می توانید هر

یک از اپ های خود را، برای مثال اپ پرداخت، را در پروژه های دیگری استفاده کنید و نیازی ندارید همه چیز را از اول بنویسید.

برای ساخت یک app در داخل پروژه جنگو می توانید از دستور

Python manage.py startapp polls

اپ خود با نام مدنظرتان(در اینجا polls )را ایجاد کنید.این دستور یک پوشه به نام polls حاوی فایل های زیر را ایجاد خواهد

کرد که ساختار اپ شما را نشان می دهد :

polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py

نوشتن یک view ساده :

در یک اپ جنگو view ها منطق اپ شما را پیاده سازی می کنند. وظیفه یک view این است که به درخواست های کاربران پاسخ

مناسبی دهد و منطق این پاسخ توسط برنامه نویس پروژه پیاده سازی می شود. برای نوشتن یک view می توانید در داخل پوشه

polls فایل wiwes.py را باز کنید و منطق مدنظرتان را در قالب ویو های پروژه پیاده سازی کنید. برای مثال به کد زیر توجه کنید :

from django.http import HttpResponse
def index(request):
    return HttpResponse("Hello, world. This is my first view “)

این کد ساختار یک view ساده به نام index را نشان می دهد. در اینجا این ویو فقط یک httpresponse ساده که شامل یک

متن است را بر می گرداند. عملکرد این ویو به این شکل است که زمانی ویو index از طریق یک url فراخوانی می شود، این ویو

یک request را به عنوان پارامتر ورودی می گیرد و یک متن را به عنوان پاسخ این درخواست برمی گرداند.

نوشتن url مربوط به یک view :

برای مشخص کردن این که هر یک از view ها چه زمانی باید فراخوانی شوند، از url ها استفاده می کنیم. برای نوشتن url ها

باید یک فایل با نام urls.py در داخل فولدر اپ خود )polls )ایجاد کنید و کدهای زیر را در داخل آن بنویسید :

from django.urls import path

from . import views

] = urlpatterns

 path('', views.index, name='main'),

[

در اینجا هر متد path یک url برای ما تعریف می کند که شامل سه آرگومان است. آرگومان اول همان متنی است که

هنگام فراخوانی این url در نوار آدرس مرورگر نشان داده می شود. آرگومان دوم آدرس همان view است که می

خواهیم هنگام فراخوانی این url اجرا شود. در نهایت آرگومان سوم نیز همان نامی است که این url را با آن

فراخوانی می کنیم. url نوشته شده در این مثال می گوید که هنگامی که url با نام main فراخوانی می شود، ویو

index ما را فراخوانی کن. برای آشنایی بیشتر با url ها می توانید مقاله ” آشنایی با url ها در جنگو ” را مطالعه کنید.

فایل urls.py معرفی شده در باال مربوط به اپ ما بود. برای اینکه بتوانیم این url ها را فراخوانی کنیم، ابتدا باید این

فایل را در فایل urls.py موجود در فولدر mysite به صورت زیر تعریف کنیم :

from django.contrib import admin

from django.urls import include, path


urlpatterns = [

path('polls/', include('polls.urls')),

path('admin/', admin.site.urls),
]

همان طور که می بینید در اینجا دو url تعریف شده است که url اول مربوط به معرفی فایل urls.py موجود در

اپ ما و url دوم آدرس صفحه ادمین پیش فرض جنگو را مشخص می کند.

برای اجرای ویو index و مشاهده نتیجه، می توانید با دستور

python manage.py runserver

سرور جنگو را اجرا کرده و سپس آدرس

http://localhost:8000/polls/

در نوار آدرس مرور خود تایپ کنید. پس از اجرای ویو index ، متن ” view first my is This. world, Hello “در صفحه مروگر شما نشان داده شود.

این پروژه بدون دیتابیس یا همان مدل های جنگو پیاده سازی شده است، در حالی که در پروژه های واقعی ما نیاز به

دیتابیسی برای ذخیره سازی داده ها داریم. برای آشنایی با مدل های جنگو و نحوه ذخیره اطالعات در دیتابیس می توانید

مقاله ” آشنایی و کار با مدل ها در جنگو ” مطالعه کنید.

به زودی آموزش های مربوط به کار با view ها و template ها در جنگو و همچنین ساخت یک پروژه واقعی در جنگو برای

شما عزیزان ارائه خواهد شد.

حتما به کانال تلگرامی ما هم سر بزنید

2 ديدگاه

  1. 1398-12-18

    سلام
    ممنونم از دوره خیلی خیلی خوبتون
    ببخشید
    من فایل get-pip.py رو توی سایت رسمیش سرچ کردم
    بیشتر از ۱۰ هزار تا پروژه آورد برای من

    کدومشو دقیقا باید دانلود کنم آخه

    • 1399-02-07

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

      python -m pip install اقدام به نصب کتابخانه ها بکنید

نوشتن دیدگاه

نشانی ایمیل شما منتشر نخواهد شد.