آموزش پروژه محور جنگو ــ ساخت شبکه اجتماعی (۳- دنبال کردن)

مدت :

۴ ساعت و ۱۵ دقیقه

قیمت : ۱۲۴,۰۰۰ تومان
LinkedIn
Twitter
Facebook
Telegram

درباره مدرس 

اطلاعات دوره

توضیحات

این بسته در واقع فصل سوم از آموزش جنگو پروژه محور با ساخت شبکه اجتماعی شبیه اینستاگرام است. در این فصل به پایش رفتار کاربران و برقرای ارتباط میان اعضا (دنبال کردن) می‌پردازیم. به بهانه اجرای این پروژه موارد بسیاری را نیز در جنگو فرا خواهیم گرفت. ساخت دیتابیس با Redis در جنگو و کار با Signals در جنگو از آن جمله‌اند.

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

فصل اول – ثبت نام و ساخت پروفایل کاربران

فصل دوم – اشتراک گذاری عکس توسط کاربران

 

آموزه‌های اصلی
  • مفهوم Redis و پیاده سازی آن در جنگو
  • کار با Signals در جنگو
  • کار با ContentTypes
  • مفهوم و کاربرد GenericForeignKey
  • استفاده از AJAX و JQuery در جنگو
  • مفهوم دیتابیس نرمال و غیرنرمال سازی

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

 

این آموزش در یک نگاه

بیایید نگاهی به مراحل این فصل از آموزش جنگو 3 بیندازیم. این فصل از آموزش پروژه محور جنگو با تعریف فیلد چند به چند در جنگو آغاز شد. یاد گرفتیم که چطور یک ارتباط ManyToMany در جنگو را با استفاده از مدل واسط (Intermediary Model) برقرار کنید.

با این روش یک فیلد تعداد دنبال کنندگان/دنبال شوندگان به مدل User اضافه کردیم. البته ما مدل User اپ Auth را تغییر ندادیم. ما از متد add_to_class استفاده کردیم که می‌تواند یک فیلد را فقط در زمان اجرا به یک کلاس در جنگو اضافه کند.

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

در ادامه آموزش امکان دنبال کردن کاربران را طراحی کردیم. دکمه Follow را به پروژه اضافه کردیم و عملکرد آن را به کمک AJAX و JQuery مشابه عملکرد پسند در فصل قبل نوشتیم.

سپس یک اپ به پروژه اضافه کردیم که مسئول پایش رخدادها (Actions) در پروژه باشد. رخدادها گوناگون هستند. مثلا یک کاربر یک کاربر دیگر را دنبال کند. یک کاربر یک عکس را پسند کند. به این دلیل در طراحی مدل Action از کلید خارجی عمومی در جنگو یا GenericForeinKey و فریمورک ContentTypes در جنگو استفاده کردیم.

در بخش پایانی این آموزش روی بهینه سازی دیتابیس در جنگو تمرکز کردیم. متدهای select_related و prefetch_related را شناختیم. این دو به نوعی JOIN در SQL را در ORM جنگو ممکن می‌کنند.

همچنین یاد گرفتیم که شاید نیاز باشد که یک دیتابیس نرمال را غیرنرمال کنیم سرعت بیشتر شود. در این راستا با مفهوم دیتابیس نرمال آشنا شدیم. فهمیدیم که اگر فیلدهای غیرنرمال به دیتابیس اضافه شوند باید به صورت خودکار روزآمد شوند.

برای خودکارسازی اجرای تابع ها می‌توان از Signals در جنگو استفاده کرد. تابع های گیرنده یا Receiver می‌توانند طوری تنظیم شوند که با رخ دادن یک اتفاق به صورت خودکار اجرا شوند.

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

سرانجام با استفاده از redis-py یاد گرفتیم که چطور از ردیس در جنگو استفاده کنیم. ساخت دیتابیس با Redis در حافظه موقت و سرعت آن را تجربه کردیم. از ردیس برای ثبت تعداد بازدید عکس ها در پروژه خود بهره گرفتیم.

در درس پایانی این پروزه به طوفان فکری و یک شگفتانه پرداختیم. همچنین نکته‌ها و توصیه‌های پایانی برای ادامه راه را با شما در میان گذاشتیم.

 

این آموزش جنگو 3 بی‌نظیر است زیرا
  • نگاه حرفه‌ای تری به بهینه سازی دیتابیس پیدا می‌کنید.
  • یک آموزش پروژه محور جنگو 3 را پیش می‌بریم.
  • ساخت دیتابیس با Redis در رم را می‌آموزید.
  • با تعدادی ابزار مثل ContentType و Signal در جنگو آشنا می‌شوید.
  • تمام کدها را با هم می‌نویسیم و درک می‌کنیم.

 

پیشنیاز

 

کلیدواژگان

آموزش جنگو 3 – آموزش Django 3 – آموزش پروژه محور جنگو 3 – ساخت شبکه اجتماعی با جنگو – سایت شبیه اینستاگرام با جنگو – سایت شبیه pinterest با جنگو – ایجکس در جنگو – کار با Redis در جنگو – کار با سیگنال در جنگو – ساخت دیتابیس با ردیس – پایگاه داده نرمال چیست ؟ – غیرنرمال سازی دیتابیس در جنگو – بهینه سازی دیتابیس در جنگو

سرفصل‌‌ها

سرفصل‌‌ها

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

 

درس سی و چهارم: ایجاد الگوی دنبال کنندگی
– مهم ترین کار کاربر در شبکه اجتماعی چیست؟
– یادآوری معنی ارتباط چند به چند یا Many To Many
– یادآوری نحوه پیاده سازی ارتباط ManyToMany در جنگو
– ایجاد ارتباط چند به چند یک جدول با خودش
– استفاده از مدل واسط یا Intermediary Model برای ارتباط چند به چند
– ایجاد نمونه از مدل واسط با متد create از Object Manager
– چطور جدول واسط را به مدل USER وصل کنیم؟
– معنی self در فیلدهای ManyToMany
– معنی through در فیلدهای ManyToMany
– معنی Symmetrical در فیلدهای ManyToMany
– دریافت مدل User با استفاده از get_user_model
– تغییر کلاس یوزر با متد add_to_class
– معرفی منبع برای تعریف Custom User در جنگو

 

درس سی و پنجم: نمایش فهرست کاربران
– ساخت ویو برای واکشی فهرست کاربران فعال
– ساخت تمپلت برای نمایش عکس و نام کاربران
– افزودن لینک people به منوها
– افزودن پروفایل برای کاربران از پنل مدیر
– ایده برای بهتر کردن نمایش فهرست با استفاده از ایجکس

 

درس سی و ششم: نمایش صفحه اختصاصی کاربر
– استفاده از get_absolute_url برای لینک صفحه کاربر
– کاربرد ABSOLUTE_URL_OVERRIDES در Django
– کاربرد متد reverse_lazy در شخصی سازی زمان اجرا
– استفاده از متد get_object_or_404 برای کوئری
– تفاوت request.user و context.user در جنگو
– پیاده سازی تمپلت صفحه اختصاصی کاربر

 

درس سی و هفتم: دنبال کردن کاربر (بخش اول)
– بررسی الگوریتم follow user
– نکته در مورد فراخوانی دکوریتور از مسیر اصلی پروژه
– فراخوانی دکوریتور require_post
– استفاده از متد get_or_create برای ارتباط چند به چند اختصاصی
– یادآوری JsonResponse برای بازگشت جواب به ریکوئست ایجکس
– متد delete برای حذف سطر از دیتابیس جنگو
– نگاشت URL دنبال کردن کاربران
– نکته مهم در ترتیب path در urls برای جلوگیری از تداخل

 

درس سی و هشتم: دنبال کردن کاربر (بخش دوم)
– یادآوری بلوک domready
– تعریف صورت مساله در فرانت اند
– کاربرد ویژگی data در تگ a
– ارسال درخواست ایجکس با متد post در jQuery
– معنی کلیدواژه this در هندلر کلیک دکمه
– معنی تابع کالبک Callback Function
– پردازش JsonResponse در کالبک پاسخ سرور
– به روز رسانی تعداد دنبال کنندگان و متن دکمه Follow
– به روزرسانی اکشن follow / unfollow در جواب ایجکس
– اجرای پروژه و بررسی نتیجه

 

درس سی و نهم: اپلیکیشن پایش فعالیت کاربران
– نمونه هایی از Action در اینستاگرام
– تعریف صورت مساله و احتیاج به مدل
– ایجاد اپلیکشین actions
– فعال کردن اپلیکیشن در INSTALLED_APPS
– نکته مهم در کلیدخارجی پویا به جدول کاربران
– نقص مدل پایش فعالیت‌ها و نیاز به یک ابزار generic

 

درس چهلم: اپلیکیشن ContentTypes در جنگو
– کار اپ contenttypes در جنگو
– نصب contenttypes در آغاز پروژه
– بررسی اپ contenttypes در contrib جنگو
– بررسی جدول contrib_content_type
– کلاس ContentType و اتریبیوت های app_label و model
– کار ContentTypeManager
– اجرای نمونه کد برای کوئری زدن روی contenttypes
– مفهوم Generic Relations با یک مثال

 

درس چهل و یکم: افزودن کلید خارجی عمومی به مدل
– ایجاد کلید خارجی به مدل ContentTypes
– ایجاد فیلد از نوع PositiveIntegerField
– ایجاد یک کلید خارجی عمومی GenericForeignKey
– افزودن مدل به پنل admin و نگاشت آن به دیتابیس
– بررسی نحوه افزودن Action در پنل مدیریت

 

درس چهل و دوم: تابع ذخیره فعالیت کاربران
– چرا به تابع برای ذخیره Action نیاز داریم؟
– ایجاد ماژول utils در اپ جنگو
– ایجاد تابع create_action
– کاربرد مفید فیلد GenericForeignKey در تابع
– متد save از مدل جنگو برای ذخیره در دیتابیس
– فرق timezone و datetime در جنگو
– ویژگی USE_TZ در جنگو
– متد now از timezone برای دریافت زمان کنونی
– متد timedelta از datetime برای گرفتن زمان گذشته
– کار متد get_for_model از مدل ContentType جنگو
– فیلتر اکشن های مشابه زیر یک دقیقه گذشته از دیتابیس
– متد filter از منیجر objects جنگو

 

درس چهل و سوم: مدیریت فعالیت‌های گوناگون کاربران
– ثبت رخداد اشتراک گذاری تصویر در جدول action
– ثبت رخداد پسندیدن عکس در جدول action
– ثبت رخداد ایجاد نمایه توسط کاربر در جدول action
– ثبت رخداد دنبال کردن کاربران توسط کاربر در جدول action

 

درس چهل و چهارم: نمایش فعالیت کاربران (بخش اول)
– فراخوانی مدل Action در ویوی dashboard
– استفاده از متد exclude از API مربوط به QuerySet جنگو
– حذف اکشن های مربوط به خود کاربر
– دریافت id کاربرانی که کاربر ما دنبال می‌کند
– استفاده از متد values_list و پارامتر flat
– استفاده از متد __in برای جستجوی یک QuerySet در یک لیست
– معرفی مفهوم JOIN در SQL و کوئری خام دارای جوین
– معرفی متد select_related از ORM جنگو برای اجرای JOIN
– متصل کردن کلیدهای خارجی و کلیدهای یک به یک در کوئری ست
– دریافت پروفایل کاربر با JOIN از جدول action ها
– معرفی متد prefetch_related از ORM جنگو برای JOIN پایتونی
– تفاوت select_related و prefetch_related

 

درس چهل و پنجم: نمایش فعالیت کاربران (بخش دوم)
– ایجاد فایل detail در اپ actions برای رعایت Separation of Concerns
– نمایش تصویر user و target در div از کلاس images
– لینک کردن تگ img به صفحه تصویر یا کاربر
– استفاده از تگ thumbnail برای نمایش بندانگشتی تصویر
– نمایش تاریخ به صورت زمان گذشته با فیلتر timesince
– نمایش متن رخداد در تگ span و زیر تگ p
– درج فایل detail.html در داشبورد کاربر با include کردن در html
– آزمایش پروژه و نمایش آخرین رخدادها
– تغییر کوچک css برای بهبود رنگ نمایش تاریخ

 

درس چهل و ششم: غیرنرمال سازی و دیتابیس نرمال
– مفهوم نرمال سازی پایگاه داده
– مفهوم فرم های نرمال
– مفهوم و کاربرد غیرنرمال سازی با یک مثال
– یادآوری متد annotation در جنگو
– یادآوری متد Count در جنگو
– شمارش تعداد پسند عکس ها با انوتیشن
– سبک کردن کوئری با غیرنرمال سازی
– خوبی و بدی غیرنرمال سازی

 

درس چهل و هفتم: کار با سیگنال و ماژول Signals در جنگو
– مفهوم سیگنال چیست‌ ؟
– کاربرد signal dispatcher
– مفهوم تابع receiver در جنگو
– افزودن ماژول signals به یک اپ
– معرفی ماژول سیگنال به AppConfig
– تابع ready در ماژول apps اپ های جنگو
– دکوریتور @receiver و کار آن
– مفهوم sender و instance
– تابع pre_save و post_save
– تابع pre_init و post_init
– اجرای denormalization روی پایگاه داده
– به روز رسانی دیتابیس با دریافت سیگنال
– مهاجرت دیتابیس و آزمایش پروژه
– اجرای کوئری سریع تر با دینورمالیزه کرده

 

درس چهل و هشتم: Redis چیست ؟ __ تعریف، نصب و راه اندازی
– ردیس یا Redis چیست؟
– تعریف و کاربرد ردیس
– تاریخچه شکل گیری Redis
– معنی ذخیره به صورت ساختمان داده
– انواع ساختمان داده یا Data Structure در Redis
– پشتیبانی ردیس از زبان های برنامه نویسی گوناگون
– مثالی از استفاده ردیس به عنوان دیتابیس
– نصب Redis در لینوکس و مک
– نصب Redis در ویندوز با استفاده از WSL
– آموزش نصب ساده Redis در ویندوز از گیت هاب
– راه اندازی سرور ردیس با redis-server
– تغییر پورت ردیس با فلگ –port
– ایجاد نمونه با دستور SET
– فراخوانی نمونه با دستور GET
– تعیین زمان برای حذف خودکار نمونه با دستور EXPIRE
– حذف رکورد با دستور DEL
– مستندات دستورات Redis و انواع داده در ردیس

 

درس چهل و نهم: استفاده از Redis در پایتون و جنگو
– آشنایی با اپ redis-py
– نصب ردیس پای و آشنایی با مستندات آن
– تعریف پایگاه داده با ردیس
– متدهای set و get در اپ redis-py
– توصیه برای نحوه ایجاد کلیدها در ردیس با کلون
– تنظیم port و host و db هنگام ایجاد دیتابیس با ردیس
– نصب ردیس روی جنگو
– فراخوانی ردیس در جنگو و ایجاد دیتابیس
– چطور با ردیس کار کنیم و خودآموز باشیم؟
– آشنایی با متد incr
– نمایش تعداد بازدید عکس ها با ردیس

 

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

نظرات (11)

11 دیدگاه برای آموزش پروژه محور جنگو ــ ساخت شبکه اجتماعی (۳- دنبال کردن)

  1. حمیدرضا مدنی

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

    • مصطفی آصفی

      سلام و ممنون از محبت شما آقای مدنی. امیدوارم که آموزش ها نقطه شروع کار عملی باشن.
      پیرو درخواستتون در جریان باشین که آموزش ساخت فروشگاه با جنگو و ری اکت هم آغاز شده که فصل اول رو در این نشانی (+) می تونید بررسی کنید.

  2. امین اجاقی (خریدار محصول)

    سلام و درود خدمت استاد بزرگ و گرامی مصطفی آصفی عزیز و دوست داشتنی استاد عزیز این دوره نیز به سلامتی به پایان رسید و با یکدیگر یک شبکه اجتماعی خوب ونیکو طراحی کردیم و به دانشمان در این زمینه اضافه گشته است تا کنون من با شما چهار دوره از آموزش هایتان را به اتمام رسانده ام و بسیار در زمینه طراحی وبسیات رشد کرده ام و در حال ادامه هستم تا رسیدن به یک full stack developer اکنون می خواهم دوره HB-DjangoAPI-05-IntroDjangoREST شروع کنم و پس از این به سراغ یک دوره خوب از جاوا اسکریپت بروم اگر شما دوره مناسبی میشناسید لطفا معرفی فرمایید تا از آن استفاده نمایم و همچنین منتظر آن دوره فروشگاه اینترنتی نیز می باشم و اینکه با آموزش های نیکوی خویش بیشتر و بیشتر ما را در زمینه یک برنامه نویس بکند بودن آگاه سازید به نحوی که چشمان ما خود بداند هر طرحی را چگونه شروع و به پایان برساند با تشکر از محبت های شما استاد عزیز و دوست داشتنی برکت خدا بر شما و خانواده محترمتان .

    • مصطفی آصفی

      سلام به شما. آقای اجاقی عزیز در حال حاضر در حال طراحی یک مجموعه آموزش های لازم برای فرانت اند در هم رویش هستیم. ولی برای این که وقت رو از دست ندین می تونید آموزش های html و css و javascript مجموعه فرادرس رو ببینید مثل هم رویش آموزش هاشون رو داوری می کنن و احتمالا موارد مناسبی رو اونجا می تونید پیدا کنید.

  3. امین اجاقی (خریدار محصول)

    با سلام و درود خدمت استاد عزیز و دوست داشتنی مصطفی آصفی گرامی استاد بزرگوار یک سوال در باره تمپلت detail.html در اپ actions داشتم در باره ایت قسمت {% with user=action.user profile=action.user.profile %} در کلمه action.user یا action.user.profile کلمه action از کجا میاد زیرا ما در view دیکشنری را در زمان رندر شدن actions تعریف کردیم . با تشکر از محبت های بسیار شما استاد عزیز برکت خدا بر شما و خانواده محترمتان . و در مورد آن پیشنهاد هم حق با شماست هرگونه که آموزش ها پیش می رود در مسیر خود بهینه بودن اجرای پروژه با شماست من این موضوع در نظرم بود به شما انتقال دادم تصمیم های نیکوی شما همیشه ارزشمند می باشد .

    • مصطفی آصفی

      سلام به شما. من خدمتتون پایین توضیح میدم ولی توصیه می کنم درس های 44 و 45 رو با دقت بیشتری ببینید.
      اول به views.py اپ account برید. اونجا ما تو ویوی dashboard داریم لیست اتفاقات رو با نام actions به تمپلت detail.html همین اپ می فرستیم.
      حالا سراغ تمپلت detail.html همین اپ account برید. آخر این تمپلت ما داریم این لیست actions رو روش حلقه for می زنیم و می گیم اگه هر کدوم از اعضای این لیست اسمشون action باشه بیا برو به ازای این اکشن فایل زیر رو به این تمپلت فعلی بچسبون
      actions/action/detail.html
      اینجاست که به ازای هر action یه مرتبه فایل detail.html اپ actions صدا زده میشه.

  4. امین اجاقی (خریدار محصول)

    با سلام و درود فراوان بر استاد بزرگ و گرامی مصطفی آصفی عزیز و دوست داشتنی استاد عزیز یک پیشنهاد داشتم برای آموزش هایتان استاد اگر ممکن است در آموزش هایتان کد ها را پشت سر هم بنویسید و کدی بعدا به قبل کدها اضافه نکنید زیرا من آموزش ها را می نویسم و بیار از لاک غلط گیر استفاده می نمایم اگر کدها را پشت سر هم بنویسید بسیار ممنون و متشکر می شوم با تشکر فراوان از محبت های شما استاد بزرگ و دوست داشتنی برکت خدا بر شما و خانواده محترمتان .

    • مصطفی آصفی

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

  5. امین اجاقی (خریدار محصول)

    سلام و درود خدمت استاد بزرگ و دوست داشتنی مصطفی آصفی عزیز استاد گرامی در طی آموزش ها من دومین وبسایت را نیز برا مشتری طراحی کردم و در اختیار گذاشته ام و آپلود کرده ام .لینک را ببینید : jarsaghil-morovati.ir با تشکر از محبت های شما استاد بزرگ و گرامی برکت خدا بر شما و خانواده محترمتان .

    • مصطفی آصفی

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

  6. ابوالفضل حسن زاده (خریدار محصول)

    سلام استاد خسته نباشید. استاد من در سایت کورا درخواست کار برای بسیاری از اگهی های استخدام طراح فرانت اند یا برنامه نویس بک اند اما همه دیدن ولی قبول نکردن و اینکه بیشتر همه اهمیتی زیادی به پیشینه کاری میدهند. خب ما که پیشینه کاری نداریم حداقل ما رو به عنوان کارآموز هم قبول نمیکنم. به نظر شما چه کار کنیم که اعتماد طرف مقابل رو جذب کنیم ؟ و چی کار کنیم که به طرف مقابل رو از این مطلع کنیم که اره من میتونم این کار رو انجام بدم.

    • مصطفی آصفی

      سلام به شما. ببینید بهترین کار ایجاد نمونه هست. شما چندین نمونه برای خودتون کار طراحی کنید و موقع پیشنهاد کار یا کارآموزی اون لینک ها رو به عنوان سبک کار معرفی کنید.
      وقتی کسی قراره در حوزه فرانت اند به ما کار بده باید ببینه سبک کار چطوره. وقتی کسی قراره ما رو کارآموزی بپذیره هم باید ببینه چقدر اهل کار هستیم و چند تا نمونه زدیم.

      پی‌نوشت: یک روش شناخته شدن در بازار کار هم تولید آموزش هست. در حال حاضر در هم رویش آموزش های پایه فرانت اند مثل html و css و bootstrap نداریم. چرا با تولید این ها شروع نمی کنید. درخواستتون رو می تونید از فرم همکاری با ما (بخش تدریس) ارسال کنید.

  7. amir ayat (خریدار محصول)

    سلام و دورود خدمت استاد گرانقدر
    مشکلی که در دیدگاه قبلی مطرح کردم خوشبختانه حل شد و ناشی از اشتباه در import ها بود و باگ در try خودشو نشون نمیداد
    ابتدا لازم میدونم از تلاش شما برای تهیه این سری آموزش تشکر کنم من واقعا لذت بردم
    در نهایت یه ایراد جزئی در قسمت 40 فایل detail.html هست
    {{ total_views }} view {{ total_likes|pluralize }}
    total_likes باید با total_views جایگزین بشه
    ممنون بابت تلاش شما در آموزش مطالب

    • مصطفی آصفی

      سلام سلامت باشید. ممنونم که رفع مشکلتون رو اطلاع دادید.
      در مورد خطایی که گزارش کردید، درس 40 که نباید باشه. احتمالا درس 49 منظورتون هست.
      آفرین به دقت نظر شما. خطا رو رفع و مخزن رو با ذکر نام شما به روز کردم.

  8. amir ayat (خریدار محصول)

    با سلام و عرض تقدیر بابت این آموزش ارزشمند
    یه مشکل در پیاده سازی ایجکسی follow برای من پیش اومده به این شکل که در ویو user_follow پارامتر های id و action به درستی دریافت میشن و تابع وارد اولین شرط if میشه اما try نمیکنه و مستقیم except میده. اینو از این نظر میگم که به جای pass کردن except خروجی جیسونی زیر رو جایگزین کردم:
    return JsonResponse({‘user_id’: user_id , ‘action’: action})
    و دقیقا با id و action ورودی یکی بود. بنابرین کال بک فانکشن هم عمل نمیکنه و رکورد مربوطه در دیتابیس ثبت نمیشه
    احتمال خطای سینتکسی کمه چون برای اطمینان کد رو از روی نسخه آموزشی کپی کردم و فرقی نکرد
    لایک ایجکسی که دستور عمل مشابه داره به درستی عمل میکنه اما فالو نه 🙁
    ممنون میشم راهنمایی بفرمایید

  9. رضا (خریدار محصول)

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

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

    پیشاپیش سال نو رو به شما تبریک میگم.
    سلامت و پایدار باشید.

    • مصطفی آصفی

      سلام سلامت باشید. در مورد سورس کد لینک سورس کد پروژه نهایی به عنوان فایل DjangoPr02ScN-SRC.zip به فایل‌های فصل اول پیوست شده. لطفا با دقت بیشتری بررسی کنید.
      در مورد آموزش Django REST ممنون از ابراز لطف شما. خوشحالم که مفید بوده. پیشنهادتون پیشنهاد خوبیه. حتما در آینده روی این بحث برمی‌گردیم و یک پروژه اجرا می کنیم.
      بنده هم پیشاپیش سال نو رو تبریک می گم و براتون تندرستی و آرامش آرزومندم.

  10. ابوالفضل حسن زاده (خریدار محصول)

    سلام استاد خسته نباشید. بسیار عالی ما تا انتشار اموزش بعدی این مطالب ارزشمند رو تمرین میکنیم تا حق ما هم به عنوان هنرجو نسبت به شما ادا بشه. استاد به نظرم جای دنیای شبکه و هک در این سایت خالی هستش. این دست اموزش ها در اینده در سایت قرار میگیرند ؟
    مثلا از شبکه اموزش های مثل network +, CCNA , CCNP و….
    یا از دنیای هک دوره CEH و …..
    در پایان کلام استاد یه دوره CEH هم بگذارید.

    • مصطفی آصفی

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

  11. مهدی

    سلام آقای آصفی

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

    آموزش بعدی شما چی هست

    • مصطفی آصفی

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

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

نظرات کاربران در خصوص دوره 

11 دیدگاه برای آموزش پروژه محور جنگو ــ ساخت شبکه اجتماعی (۳- دنبال کردن)

  1. حمیدرضا مدنی

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

    • مصطفی آصفی

      سلام و ممنون از محبت شما آقای مدنی. امیدوارم که آموزش ها نقطه شروع کار عملی باشن.
      پیرو درخواستتون در جریان باشین که آموزش ساخت فروشگاه با جنگو و ری اکت هم آغاز شده که فصل اول رو در این نشانی (+) می تونید بررسی کنید.

  2. امین اجاقی (خریدار محصول)

    سلام و درود خدمت استاد بزرگ و گرامی مصطفی آصفی عزیز و دوست داشتنی استاد عزیز این دوره نیز به سلامتی به پایان رسید و با یکدیگر یک شبکه اجتماعی خوب ونیکو طراحی کردیم و به دانشمان در این زمینه اضافه گشته است تا کنون من با شما چهار دوره از آموزش هایتان را به اتمام رسانده ام و بسیار در زمینه طراحی وبسیات رشد کرده ام و در حال ادامه هستم تا رسیدن به یک full stack developer اکنون می خواهم دوره HB-DjangoAPI-05-IntroDjangoREST شروع کنم و پس از این به سراغ یک دوره خوب از جاوا اسکریپت بروم اگر شما دوره مناسبی میشناسید لطفا معرفی فرمایید تا از آن استفاده نمایم و همچنین منتظر آن دوره فروشگاه اینترنتی نیز می باشم و اینکه با آموزش های نیکوی خویش بیشتر و بیشتر ما را در زمینه یک برنامه نویس بکند بودن آگاه سازید به نحوی که چشمان ما خود بداند هر طرحی را چگونه شروع و به پایان برساند با تشکر از محبت های شما استاد عزیز و دوست داشتنی برکت خدا بر شما و خانواده محترمتان .

    • مصطفی آصفی

      سلام به شما. آقای اجاقی عزیز در حال حاضر در حال طراحی یک مجموعه آموزش های لازم برای فرانت اند در هم رویش هستیم. ولی برای این که وقت رو از دست ندین می تونید آموزش های html و css و javascript مجموعه فرادرس رو ببینید مثل هم رویش آموزش هاشون رو داوری می کنن و احتمالا موارد مناسبی رو اونجا می تونید پیدا کنید.

  3. امین اجاقی (خریدار محصول)

    با سلام و درود خدمت استاد عزیز و دوست داشتنی مصطفی آصفی گرامی استاد بزرگوار یک سوال در باره تمپلت detail.html در اپ actions داشتم در باره ایت قسمت {% with user=action.user profile=action.user.profile %} در کلمه action.user یا action.user.profile کلمه action از کجا میاد زیرا ما در view دیکشنری را در زمان رندر شدن actions تعریف کردیم . با تشکر از محبت های بسیار شما استاد عزیز برکت خدا بر شما و خانواده محترمتان . و در مورد آن پیشنهاد هم حق با شماست هرگونه که آموزش ها پیش می رود در مسیر خود بهینه بودن اجرای پروژه با شماست من این موضوع در نظرم بود به شما انتقال دادم تصمیم های نیکوی شما همیشه ارزشمند می باشد .

    • مصطفی آصفی

      سلام به شما. من خدمتتون پایین توضیح میدم ولی توصیه می کنم درس های 44 و 45 رو با دقت بیشتری ببینید.
      اول به views.py اپ account برید. اونجا ما تو ویوی dashboard داریم لیست اتفاقات رو با نام actions به تمپلت detail.html همین اپ می فرستیم.
      حالا سراغ تمپلت detail.html همین اپ account برید. آخر این تمپلت ما داریم این لیست actions رو روش حلقه for می زنیم و می گیم اگه هر کدوم از اعضای این لیست اسمشون action باشه بیا برو به ازای این اکشن فایل زیر رو به این تمپلت فعلی بچسبون
      actions/action/detail.html
      اینجاست که به ازای هر action یه مرتبه فایل detail.html اپ actions صدا زده میشه.

  4. امین اجاقی (خریدار محصول)

    با سلام و درود فراوان بر استاد بزرگ و گرامی مصطفی آصفی عزیز و دوست داشتنی استاد عزیز یک پیشنهاد داشتم برای آموزش هایتان استاد اگر ممکن است در آموزش هایتان کد ها را پشت سر هم بنویسید و کدی بعدا به قبل کدها اضافه نکنید زیرا من آموزش ها را می نویسم و بیار از لاک غلط گیر استفاده می نمایم اگر کدها را پشت سر هم بنویسید بسیار ممنون و متشکر می شوم با تشکر فراوان از محبت های شما استاد بزرگ و دوست داشتنی برکت خدا بر شما و خانواده محترمتان .

    • مصطفی آصفی

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

  5. امین اجاقی (خریدار محصول)

    سلام و درود خدمت استاد بزرگ و دوست داشتنی مصطفی آصفی عزیز استاد گرامی در طی آموزش ها من دومین وبسایت را نیز برا مشتری طراحی کردم و در اختیار گذاشته ام و آپلود کرده ام .لینک را ببینید : jarsaghil-morovati.ir با تشکر از محبت های شما استاد بزرگ و گرامی برکت خدا بر شما و خانواده محترمتان .

    • مصطفی آصفی

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

  6. ابوالفضل حسن زاده (خریدار محصول)

    سلام استاد خسته نباشید. استاد من در سایت کورا درخواست کار برای بسیاری از اگهی های استخدام طراح فرانت اند یا برنامه نویس بک اند اما همه دیدن ولی قبول نکردن و اینکه بیشتر همه اهمیتی زیادی به پیشینه کاری میدهند. خب ما که پیشینه کاری نداریم حداقل ما رو به عنوان کارآموز هم قبول نمیکنم. به نظر شما چه کار کنیم که اعتماد طرف مقابل رو جذب کنیم ؟ و چی کار کنیم که به طرف مقابل رو از این مطلع کنیم که اره من میتونم این کار رو انجام بدم.

    • مصطفی آصفی

      سلام به شما. ببینید بهترین کار ایجاد نمونه هست. شما چندین نمونه برای خودتون کار طراحی کنید و موقع پیشنهاد کار یا کارآموزی اون لینک ها رو به عنوان سبک کار معرفی کنید.
      وقتی کسی قراره در حوزه فرانت اند به ما کار بده باید ببینه سبک کار چطوره. وقتی کسی قراره ما رو کارآموزی بپذیره هم باید ببینه چقدر اهل کار هستیم و چند تا نمونه زدیم.

      پی‌نوشت: یک روش شناخته شدن در بازار کار هم تولید آموزش هست. در حال حاضر در هم رویش آموزش های پایه فرانت اند مثل html و css و bootstrap نداریم. چرا با تولید این ها شروع نمی کنید. درخواستتون رو می تونید از فرم همکاری با ما (بخش تدریس) ارسال کنید.

  7. amir ayat (خریدار محصول)

    سلام و دورود خدمت استاد گرانقدر
    مشکلی که در دیدگاه قبلی مطرح کردم خوشبختانه حل شد و ناشی از اشتباه در import ها بود و باگ در try خودشو نشون نمیداد
    ابتدا لازم میدونم از تلاش شما برای تهیه این سری آموزش تشکر کنم من واقعا لذت بردم
    در نهایت یه ایراد جزئی در قسمت 40 فایل detail.html هست
    {{ total_views }} view {{ total_likes|pluralize }}
    total_likes باید با total_views جایگزین بشه
    ممنون بابت تلاش شما در آموزش مطالب

    • مصطفی آصفی

      سلام سلامت باشید. ممنونم که رفع مشکلتون رو اطلاع دادید.
      در مورد خطایی که گزارش کردید، درس 40 که نباید باشه. احتمالا درس 49 منظورتون هست.
      آفرین به دقت نظر شما. خطا رو رفع و مخزن رو با ذکر نام شما به روز کردم.

  8. amir ayat (خریدار محصول)

    با سلام و عرض تقدیر بابت این آموزش ارزشمند
    یه مشکل در پیاده سازی ایجکسی follow برای من پیش اومده به این شکل که در ویو user_follow پارامتر های id و action به درستی دریافت میشن و تابع وارد اولین شرط if میشه اما try نمیکنه و مستقیم except میده. اینو از این نظر میگم که به جای pass کردن except خروجی جیسونی زیر رو جایگزین کردم:
    return JsonResponse({‘user_id’: user_id , ‘action’: action})
    و دقیقا با id و action ورودی یکی بود. بنابرین کال بک فانکشن هم عمل نمیکنه و رکورد مربوطه در دیتابیس ثبت نمیشه
    احتمال خطای سینتکسی کمه چون برای اطمینان کد رو از روی نسخه آموزشی کپی کردم و فرقی نکرد
    لایک ایجکسی که دستور عمل مشابه داره به درستی عمل میکنه اما فالو نه 🙁
    ممنون میشم راهنمایی بفرمایید

  9. رضا (خریدار محصول)

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

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

    پیشاپیش سال نو رو به شما تبریک میگم.
    سلامت و پایدار باشید.

    • مصطفی آصفی

      سلام سلامت باشید. در مورد سورس کد لینک سورس کد پروژه نهایی به عنوان فایل DjangoPr02ScN-SRC.zip به فایل‌های فصل اول پیوست شده. لطفا با دقت بیشتری بررسی کنید.
      در مورد آموزش Django REST ممنون از ابراز لطف شما. خوشحالم که مفید بوده. پیشنهادتون پیشنهاد خوبیه. حتما در آینده روی این بحث برمی‌گردیم و یک پروژه اجرا می کنیم.
      بنده هم پیشاپیش سال نو رو تبریک می گم و براتون تندرستی و آرامش آرزومندم.

  10. ابوالفضل حسن زاده (خریدار محصول)

    سلام استاد خسته نباشید. بسیار عالی ما تا انتشار اموزش بعدی این مطالب ارزشمند رو تمرین میکنیم تا حق ما هم به عنوان هنرجو نسبت به شما ادا بشه. استاد به نظرم جای دنیای شبکه و هک در این سایت خالی هستش. این دست اموزش ها در اینده در سایت قرار میگیرند ؟
    مثلا از شبکه اموزش های مثل network +, CCNA , CCNP و….
    یا از دنیای هک دوره CEH و …..
    در پایان کلام استاد یه دوره CEH هم بگذارید.

    • مصطفی آصفی

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

  11. مهدی

    سلام آقای آصفی

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

    آموزش بعدی شما چی هست

    • مصطفی آصفی

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

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