در این مطلب قصد داریم توضیحات مختصری در مورد تمام ویدئوهای ارائه شده در دوره آموزش جنگو ساخت فروشگاه اینترنتی را که در سایت دانشجویار منتشر شده است، ارائه دهیم. هر نظر یا انتقادی دارید لطفا در بخش نظرات ثبت کنید. توضیحات آموزش مقدماتی جنگو را اینجا می توانید مشاهده کنید.
قسمت اول نصب Django و ساخت پروژه:
در این پروژه از جنگو 2.2.0 و پایتون 3.7 استفاده شده است. ابتدا محیط مجازی ایجاد می کنیم و جنگو را روی محیط ایزوله نصب می کنیم. در مرحله بعدی یک پروژه با نام website می سازیم و اپلیکیشنی با نام shop برای پروژه ایجاد می کنیم.
در انتهای این قسمت پروژه را با PyCharm باز می کنیم و این IDE را برای جنگو تنظیم می کنیم تا سرعت توسعه خود را افزایش دهیم. سپس پروژه را run می کنیم.
قسمت دوم پیاده سازی قالب در Django – بخش اول
در این قسمت ابتدا تمام صفحات قالب انتخاب شده در قسمت قبل دمو می شود و توضیحاتی در مورد استفاده از قسمت های مختلف آن ارائه می شود.
در ادامه در فولدر templates یه تمپلت با نام base.html ایجاد میکنیم که از طریق آن بخش های تکراری را کمتر کنیم. و این فایل را تکمیل می کنیم و بخش هایی که قرار است در تمپلت های دیگر تکرار شود block بندی می کنیم.
سپس تمپلت index.html را با ارث بری کردن از قالب پایه تکمیل می کنیم. و برای این تمپلت یه view جدید می سازیم و urls.py را برای application آماده سازی می کنیم.
قسمت سوم پیاده سازی قالب در Django – بخش دوم
ابتدا فایل های استاتیک از قبیل css ، js ، fonts را در پروژه کپی می کنیم و تنظیمات static را انجام می دهیم تا وب سایت ظاهر مناسبی داشته باشد.
سپس تمامی تمپلت ها را کامل می کنیم و به ازای هر تمپلت یک view جدید ایجاد می کنیم و برای هر ویو در فایل urls.py یک path مجرا می سازیم.
قسمت چهارم پیاده سازی مدل ها در Django:
در این قسمت ابتدا نمودار uml مدل ها توضیح داده می شود. سپس در models.py مدل های مربوط به فروشگاه را می نویسیم.
در این مدل ها از CharField, TextField, DateTimeField, ImageField, DecimalField, ForeignKey و … استفاده می کنیم. مدل های استفاده شده محصول، سفارش ، تراکنش، اقلام سفارش و… هستند.
همچنین در این قسمت از آموزش جنگو ساخت فروشگاه اینترنتی با متد get_absolute_url آشنا می شویم. همچنین اشاره ای به app_name داریم که برای هر اپلیکیشن namespace تنظیم می کند تا راحت تر به urls های هر اپلیکیشن دسترسی داشته باشیم.
در انتهای این قسمت تنظیمات دیتابیس را روی postgreSql تنظیم می کنیم و به جای استفاده از sqlite از postgres استفاده خواهیم کرد. و در نهایت migrate می کنیم و جداول در دیتابیس پستگرس افزوده می شوند.
قسمت پنجم ایجاد اولین view و نمایش اطلاعات در Django:
در ابتدای این آموزش همه مدل ها را در ادمین register می کنیم تا کاربر ادمین بتواند مدل ها را در پنل ادمین مشاهده کند. همچنین با استفاده از createsuperuser یک کاربر ادمین ایجاد می کنیم. و همچنین جهت نمایش جزئیات بیشتر در پنل ادمین از ModelAdmin استفاده می کنیم.
در ادامه برخی مشکلاتی که ممکن است رخ بدهد توضیح داده می شود، از قبیل مشکلات متد str و مشکلات نمایش فایل های media که مربوط به تصاویر و فایل های محصولات هستند. و سپس محصولاتی برای تست پروژه افزوده می شود.
در ادامه همه محصولات ثبت شده را با استفاده از view هایی که ایجاد می کنیم و با استفاده از دستورات Django ORM در صفحات مربوطه نمایش می دهیم. و سپس برای نمایش جزئیات محصولات یک ویو دیگر می سازیم.
قسمت ششم افزودن سفارش به سبد خرید در Django – بخش اول:
ابتدا یک اپلیکیشن با نام cart ایجاد می کنیم و تنظمیات مربوطه برای این اپلیکیشن را در فایل settigns.py اضافه می کنیم. سپس در app جدیدی که ساختیم یک فایل با نام cart.py می سازیم.
در اولین مرحله متد ini را برای کلاسی با نام cart در فایل cart.py ایجاد کرده ایم پیاده سازی می کنیم. و سپس متد add را اضافه می کنیم. وظیفه این متد اضافه کردن محصول به سبد خرید و یا ویرایش سبد خرید است. سپس متد save را برای ذخیره کردن اطلاعات پیاده سازی می کنیم. و در ادامه متد remove هم آماده می کنیم.
در مرحله بعد متد iter را برای به دست آوردن لیست محصولات از کوکی پیاده سازی می کنیم. سپس متد len را پیاده سازی می کنیم که مبالغ را به دست بیاوریم.
در گام بعدی متد get_total_price را می نویسیم که مبلغ کل را محاسبه کند. و در نهایت یک متد clear جهت خالی کردن کوکی می سازیم.
قسمت هفتم افزودن سفارش به سبد خرید در Django – بخش دوم:
در این قسمت ابتدا یک forms.py به اپلیکیشن cart اضافه می کنیم. سپس در این فایل کلاس CartAddProductForm را ایجاد می کنیم و فیلدهای مربوطه را اضافه می کنیم.
سپس در فایل views.py یک ویو جدید برای اضافه کردن محصول به سبد می سازیم. سپس ویو remove را اضافه می کنیم که از سبد خرید محصول را حذف کند. در مرحله بعدی ویو دیگری با نام cart_detail می سازیم که جزئیات سبد را نمایش خواهد داد.
در مرحله بعدی فایل urls.py را برای اپ cart ایجاد می کنیم و برای همه ویوها مسیر مناسب می سازیم. همچنین app_name را برای این اپ اضافه می کنیم.
در مرحله بعدی برای سبد خرید یک template جدید با نام detail.html ایجاد می کنیم و از base.html ارث بری می کنیم.
قسمت هشتم افزودن سفارش به سبد خرید در Django – بخش سوم:
در این قسمت توضیحاتی در مورد فایل تمپلت سبد خرید ارائه می شود. و خطاهای موجود را برطرف می کنیم.
سپس وارد ویو product می شویم و تغییراتی اعمال می کنیم تا فرم ساخته شده در قسمت قبل را در خروجی نمایش دهیم و کاربر بتواند تعداد را انتخاب و به سبد خرید اضافه کند.
در مرحله بعدی محصولی به سبد خرید اضافه می کنیم و جهت آپدیت کردن تعداد محصولات و مبلغ آنها تغییراتی در ویو product اعمال می کنیم.
قسمت نهم ساخت context processor اختصاصی در Django:
در این قسمت یه context processor در اپ cart می سازیم. هدف از ایجاد این CP نمایش دادن اطلاعات سبد خرید در همه صفحات است.
بعد از ساختن context processor اختصاصی خودمان این CP را در بخش template به لیست context processor ها اضافه می کنیم. سپس وارد base.html می شویم و از context processor اختصاصی استفاده می کنیم. با استفاده از این CP کاربر در هر صفحه ای که باشد می تواند روی سبد خرید کلیک کند و وارد جزئیات سبد خود شود.
قسمت دهم ثبت سفارش مشتری در Django – بخش اول:
در این قسمت قصد داریم یک دکمه checkout اضافه کنیم تا کاربر بعد از انتخاب محصولات بقیه مراحل خرید را بتواند انجام دهد.
ابتدا تغییراتی در checkout اعمال می کنیم طوری که کاربر از قبل لاگین کرده باشد و در این صفحه نیاز به ثبت اطلاعات کاربر نباشد. برای اینکه کاربر مجبور به لاگین شود برای ویو checkout از دکوریتور login_required استفاده می کنیم. و برای اینکه کاربر صفحه لاگین را مشاهده کند تنظمیاتی در settings.py اعمال می کنیم تا کاربر به صفحه لاگین مناسب ریدایرکت شود.
سپس برای لاگین مسیر جدید در urls.py اضافه می کنیم و برای لاگین از کلاس های توکار جنگو مثل LoginView استفاده می کنیم. و تمپلت مربوطه را تکمیل می کنیم.
قسمت یازدهم ثبت سفارش مشتری در Django – بخش دوم:
برای اینکه کاربر بعد از ثبت سفارش محتویات سبد خرید را در checkout ببینید تغییراتی در تمپلت مربوطه اعمال می کنیم و در خروجی نام محصولات به همراه تعداد و مبلغ هر کدام و همچنین مبلغ کل نمایش داده می شود.
در مرحله بعدی ویو مربوط به checkout را تکمیل می کنیم تا بعد از ثبت، شماره سفارش را نمایش دهیم. و محتویات سبد خرید را clear می کنیم.
در نهایت یک فایل تمپلت با نام order_detail.html ایجاد می کنیم که شماره سفارش را ببینید و یک دکمه برای ورود کاربر به صفحه بانک نیز می سازیم. در قسمت بعد پرداخت آنلاین را پیاده سازی می کنیم.
قسمت دوازدهم پرداخت اینترنتی در Django:
در اولین گام این قسمت پکیج zeep را برای ارسال رکوئست ها به زرین پال نصب می کنیم. سپس یه ویو جدید با نام to_bank می سازیم که قرار است اطلاعات را به زرین پال ارسال کند.
جهت نگهداری اطلاعات پرداخت تغییراتی در مدل اعمال می کنیم و migrate می کنیم. و سپس مسیر جدیدی به فایل urls.py اضافه می کنیم و در ادامه تغییرات مورد نیاز را در تمپلت اعمال می کنیم.
در گام بعد یک ویو جدید برای callback می سازیم که بعد از پرداخت موفق، کاربر شماره سفارش را مشاهده کند.
قسمت سیزدهم عضویت در سایت در Django:
در این قسمت از پکیج django-allauth استفاده می کنیم. ابتدا پکیج را با دستور pip نصب می کنیم. و توضیحاتی در مورد این پکیج ارائه می کنیم. سپس تنظمیات مربوطه را در settings.py اعمال می کنیم.
در قدم بعدی تنظیمات ارسال ایمیل را تعیین می کنیم که django-allatuh بتواند ایمیل ارسال کند. سپس migrate می کنیم تا جداول مجددا ساخته شوند.
در مرحله بعدی همه url های ساخته شده توسط این پکیج را نمایش می دهیم و با استفاده از registration ارائه شده توسط این پکیچ حساب کاربری جدیدی ایجاد می کنیم و ایمیل فعالسازی برای این ایمیل ارسال می شود که می توانیم با لینک فعال سازی کاربر را فعال کنیم.
قسمت چهاردهم ثبت نام و عضویت با حساب google در Django:
در قسمت پایانی این آموزش ابتدا وارد googe api console می شویم و یک credential در google می سازیم و در ادامه یک OAuth Client Id می سازیم. سپس مقادیر مورد نیار برای اپلیکیشن را اضافه می کنیم. در نهایت گوگل به ما به client id و client secret می دهد.
سپس در پنل ادمین پروژه خودمان اطلاعاتی که گوگل داده است را در مدل های مناسب اضافه می کنیم. و فرایند ورود با گوگل در جنگو را انجام می دهیم.