bookmark_border

Full Stack Web Development with ​django - قسمت 19 - پیاده سازی model پروفایل کاربران

5000 تومان

توضیحات این قسمت

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

در روند پیاده سازی پروفایل کاربر نیز با signal ها در جنگو آشنا می‌شویم. signal ها به ما اجازه می‌دهند تا هنگامی که یک اتفاق خاص روی model ها می‌افتد، یک تابع را فراخوانی کنیم. مثلا می‌توان گفت هروفت تعداد کاربرانی که ثبت نام ‌میکنند مضربی از ۱۰ شد، به من ایمیل بزن!! لازمه که در یک مقاله جداگانه سیگنال ها را توضیح بدم.

بعضی وقت ها، ساختار دیتابیس به گونه ای تغییر می‌کند که اطلاعات قبلی دچار مشکل می‌شوند. در اینجا نیز دقیقا همین اتفاق می‌افتد. من پروفایل را به گونه ای درست کردم که حتما همه کاربران باید پروفایل داشته باشند، اما برخی کاربران که از قبل ساخته شده اند، پروفایلی ندارند، به همین دلیل هنگام کار با سایت به ارور برخورد می‌کنیم. برای اصلاح ساختار اطلاعات دیتابیس لازم می‌شود تا وارد django shell بشوم. همانطور که می‌دانید شلِ جنگو محیطی کامند لاین دارد که کار با آن کمی سخت است. برای افزایش سهولت کار با shell، پکیج ipdb را نصب می‌کنم.

ipdb چند مزیت مهم دارد:

  • امکان استفاده از auto complete  را در محیط کامند لاین فراهم می‌کند.
  • امکان دیباگ کردن کد ها را حتی از طریق ssh مستقیما روی سرور production فراهم می‌کند!!
  • محیط خشک و خسته کننده کامند لاین را رنگی می‌کند.
  • اگر کد های چند خطی مانند for بنویسید، همه آن خطوط را با هم history می‌کند.

اما یک عیب بزرگ هم دارد! ترمینالی که در آن از ipdb استفاده کنید قاطی می‌کند. مثلا ممکن است Ctrl+C را از کار بیندازد. برای همین مجبور می‌شوید برای stop کردن development server دست به کار های ژانگولری بزنید که در همین دوره اگر دقت کنید حرکت های ژانگولری منو برای عبور از این مشکل ipdb مشاهده می‌کنید. wink

در ادامه برای نمایش ساختار دیتابیس از نرم افزار DB Browser for SQLite استفاده می‌کنم. 

فیلد education در پروفایل را نیز از نوع protected تعریف می‌کنم و امکان دسترسی به آن را از طریق getter و setter فراهم می‌کنم.

 

مدت زمان: ۴۷:۳۷

مشاهده کد: https://github.com/kasaiee/how-to-pyteacher/tree/master/019

ارزش سرمایه گذاری: ۵ هزار تومان

این قسمت رو میخوام!
نظر دهید!