آموزش جنگو (Basic) : جلسه دو | ایجاد پروژه در جنگو

در این جلسه با هم نحوه ساخت یک پروژه جنگو و چگونگی آن را بررسی می کنیم . با ما همراه باشید .آموزش جنگو: جلسه دو | نحوه ایجاد پروژه در جنگوساخت یک پروژهاگر اولین بار است که از جنگو استفاده میکنید , شما نیاز دارید تا ستاپ های اولیه ای را انجام دهید . به زبانی ساده شما نیاز دارید تا با دستوراتی خاص کدهای اولیه ی خاصی را تولید کنید . این کدها چهارچوب اصلی جنگو هستند . آنها شامل تنظیمات جنگو ,دیتابیس ها و گزینه های خاص جنگو هستند .در این دوره ابتدا با یک پروژه عملی جنگو را بررسی می کنیم و سپس به بررسی کامل بخش های مختلف آن خواهیم پرداخت .به وسیله ی دستور cd در ترمینال خود وارد دایرکتوری یا فولدری شوید که می خواهید کدهای خود را در آن بنویسید و سپس با دستور زیر پروژه ای را ایجاد کنید .django-admin startproject mysiteکد بالا باید فولدری با نام mysite برای شما ایجاد کند .محتویات فولدر mysite باید به شکل زیر باشد .mysite/ manage.py mysite/ __init__.py settings.py urls.py asgi.py wsgi.pyهر کدام از فایل ها ویژگی خاص خود را دارند و کار خاصی را انجام می دهند :فولدر mysite : فولدر mysite دربردارنده تمام فایل های پروژه شماست . نام این فولدر برای جنگو اهمیتی ندارد و شما میتوانید آن را به راحتی تغییر دهید .فایل manage.py : این فایل به شما اجازه میدهد تا به روش های مختلف با محیط جنگو ارتباط برقرار کنید . این فایل به صورت ابزاری در خط فرمان کار میکند .فولدر Mysite/mysite : این فولدر محتویات اصلی مانند تنظیمات یا url ها را نگه داری میکند .فایل mysite/ __init__.py : این فایل خالی به پایتون میگوید که این فولدر یک پکیج پایتونی است . اگر به تازگی با پایتون آشنا شدید کمی درباره پکیج و کتابخانه ها مطالعه کنید .فایل mysite/settings.py : این فایل تنظمیات جنگو است و به جنگو می گوید تا به چه صورتی کار کند . تنظیمات دیتابیس یا منطقه و زمان همگی در این فایل قرار گرفته اند .فایل mysite/urls.py : این فایل نیز محل تنظیم و ساخت url های جنگو است . اگر درباره url ها چیزی نمی دانید یا کمی سردرگم شدید نگران نباشید در جلوتر بیشتر با آنها آشنا خواهیم شد .فایل های mysite/asgi.py , wsgi.py : این فایل ها برای تنظیم نقطه اتصال برای نوع های اتصال asgi و wsgi می باشد . در ادامه بیشتر با آنها آشنا خواهیم شد.سرور توسعه جنگوبیایید تا بررسی کنیم آیا جنگو درست کار می کند یا نه ؟ در خط فرمان به پوشه mysite بیرونی (فولدری که نام آن مهم نیست) cd کنید و در مسیر فایل manage.py قرار بگیرید . حال دستور زیر را در خط فرمان اجرا کنید .python manage.py runserverخروجی این دستور باید به صورت زیر باشد :Performing system checks... System check identified no issues (0 silenced). You have unapplied migrations; your app may not work properly until they are applied. Run 'python manage.py migrate' to apply them . April 20, 2022 - 15:50:53 Django version 4.0, using settings 'mysite.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.شما هم اکنون سرور development جنگو را اجرا کردید . یک سرور بسیار سبک که صرفا با زبان پایتون نوشته شده است . این سرور سبک به جنگو اضافه شده است تا بتوانید بدون نیاز به پیکربندی یک سرور و بدون اتلاف زمان , اقدام به توسعه اپیلیکیشن خود کنید .توجه داشته باشید که نباید از این سرور در محیط های واقعی استفاده کنید . این سرور فقط مخصوص توسعه و تست است . بعدا به تنظیم و پیکر بندی سرور ها نیز خواهیم پرداخت .حال که سرور در حال اجرا است از مرورگر خود به ادرس http://127.0.0.1:8000 بروید . شما یک صفحه تنظیمات و تصویر یک موشک را در آنجا خواهید دید . این نشان دهنده این است که جنگو به درستی کار میکند .نکته : سرور جنگو پس از هرگونه تغییر کد در پروژه به طور اتوماتیک ریستارت خواهد شد پس شما نیازی به ریستارت کردن سرور پس از اعمال تغییرات در کد نخواهید داشت .نکته : اگر شما نیاز دارید تا جنگو روی پورت دیگری غیر از 8000 اجرا شود فقط کافیست دستور اجرای سرور را به صورت زیر تغییر داده و به جای کلمه port از عدد پورت مورد نظر خود استفاده کنید . مانند python manage.py runserver portساخت یک اپ (app)پس از اینکه تنظیمات اولیه انجام شد و سالم بودن جنگو تست شد شما میتوانید کد نویسی را اغاز کنید .هر پروژه جنگویی میتواند شامل چند app باشد . app ها میتوانند پروژه را به چندین قسمت تقسیم کنند . هر کدام از آنها کاری را بر عهده میگیرند . برای مثال یکی از app ها بخش حساب های کاربری را مدیریت میکند و دیگری بخش خرید کالا را مدیریت میکند .تفاوت app با projectیک وبسایت خبری را در نظر بگیرید . ساختار کلی این وبسایت یک project است . ولی این وبسایت میتواند شامل چند app باشد . برای مثال در این وبسایت سه app ساخته شده است . یکی از آنها مدیریت حساب های کاربری را بر عهده دارد ,دیگری مدیریت مقالات و دیگری مدیریت بخش خرید . با اینکه این سه app از یکدیگر متمایز هستند ولی همگی زیرشاخه project قرار دارند .خوبی این تقسیم بندی در جنگو این است که اگر بخشی از برنامه ایراد داشته باشد سریعا میتوان آن را بررسی و رفع کرد . یا مثلا میتوان قابلیت های جدید را به برنامه , بدون دست زدن به کد های قبلی و تغییر بخش های دیگر اضافه کرد .اپ (app) شما میتواند هر جایی از پروژه ایجاد شوند اما به طور معمول باید آنها را در کنار فایل manage.py بسازیم .این را در نظر داشته باشید که app در واقع یک نوع پکیج پایتونی است .برای اینکه app جدیدی را ایجاد کنید کافی است تا در خط فرمان , کنار فایل manage.py قرار بگیرید و دستور زیر را اجرا کنید .python manage.py startapp pollsاگر میخواهید نام دیگری را به app اختصاص دهید مقدار polls را با نام موردنظر جایگزین کنید . اکنون باید فولدری با نام polls ببینید که ساختار آن به صورت زیر است .polls/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py views.pyساخت اولین ویو (view)بیایید اولین view خود را در جنگو بنویسیم . اگر نمیدانید viewچیست و چه کاری انجام میدهد نگران نباشید . در ادامه بیشتر با view ها اشنا خواهیم شد .به فایل polls/views.py بروید و کد زیر را در آن بنویسید .from django.http import HttpResponse def index(request): return HttpResponse(&quotHello, world. You're at the polls index.&quot)این ساده ترین view ممکن در جنگو است . View تابع هایی در جنگو هستند که هنگامی که به یک url درخواستی داده میشود آنها اجرا میشوند . این توابع کارهای متفاوتی مانند نشان دادن یک HTTPresponse یا رندر کردن یک فایل html انجام میدهند که در ادامه به آن خواهیم پرداخت .برای اینکه یک url را بتوانیم به یک view یا تابع متصل کنیم نیاز به ساخت url و سپس تنظیم آن داریم . این URLConf نامیده میشود .برای ساخت یک URLConf , در اپ polls فایلی با نام urls.py ایجاد کنید . اکنون باید فولدر و دایرکتوری اپ شما به شکل زیر باشد .polls/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py urls.py views.pyبه فایل polls/urls.py بروید و کد زیر را در آن بنویسید .from django.urls import path from . import views urlpatterns = [ path(‘ ', views.index, name='index'), ]تابع ()path از شما 4 آرگومان را دریافت میکند که دو تا از آنها اجباری هستند : route و viewوظیفه این تابع ساخت یک url و اتصال یک view به آن است . این تابع 4 مقدار به ترتیب دریافت میکند :آرگومان route : این مقدار یک رشته است که حاوی الگوی url شماست . هنگامی که درخواستی به جنگو ارسال میشود ,جنگو ابتدا در لیست urlpatterns جستجو می کند و الگوی url درخواست ارسال شده را با الگوی مقدار route هر کدام از توابع path ایجاد شده مقایسه میکند تا زمانی که یکی از آنها منطبق باشد .به یاد داشته باشید که path ها صرفا فقط url درخواست ارسالی را با url های درون برنامه تطبیق میدهد .برای مثال در درخواست ارسالی به https://www.example.com/media تابع path یا همان URLConf به دنبال الگوی url با شکل و مقدار media خواهد گشت .آرگومان view : وقتی جنگو یک تطابق پیدا می کند , viewارسال شده به تابع pathتطابق داده شده را اجرا میکند و یک Httprequestرا به عنوان object به این تابع ارسال میکند . این مقدار همان requestکاربر است . علاوه بر این requestمیتوان keywordهای دیگری را نیز به تابع ارسال کرد .آرگومان kwargs : شما میتوانید علاوه بر همه ی این ها برخی از keyword و valueها را به صورت دیکشنری (dict) به view تارگت ارسال کنید .آرگومان name : شما می توانید به هر یک از url ها یک نام اختصاص دهید که این مقدار بعدا در آدرس دهی های وب بکار خواهد آمد .با برخی از این ویژگی ها کار کردیم و با برخی دیگر نیز در ادامه این کتاب کار خواهیم کرد .در این مقاله با چگونگی ایجاد یک پروژه اولیه آشنا شدید . در قسمت بعدی با دیتابیس ها بیشتر آشنا خواهید شد .