Django Expert
💵 درآمد برنامه نویسی چقدر هست؟ در این ویدئو راجع به معامله هایی که توی اتاق هایی با درهای بسته انجام میشه، صحبت میکنیم 😎💰 🖥 مشاهده در یوتوب: 👉 Link: https://youtu.be/uwJpBPqyBzI #برنامه_نویسی #درآمد #درآمد_برنامه_نویسی 〰️〰️〰️〰️〰️ © @DjangoEx | @AI_Python
✔️ بعد از این ویدئو دوستان عزیز زیادی پیام میدن و راجع به قیمت های مختلف میپرسن، مثلا آیا بعد ۶ ماه میشه به ۵ تومن درآمد رسید؟ آیا بعد یک سال میشه ماهی ۲۰ تومن درآمد داشت؟
لازم دونستم یک نکتهای رو بگم، درآمد شمارو فقط یک نفر مشخص میکنه و اون هم کسی هست که هرروز توی آینه بهش نگاه میکنید. پس سعی کنید اون آدمی که هرروز توی آینه میبینید رو دوست داشته باشید و برای موفق شدنش تلاش کنید:)
درنهایت اینکه باعث خوشحالی من هست ببینم هر کدومتون به درآمدهای بالا و موفقیت های بیشمار برسه و به قول خودمون happy developer باشه. 😊🙏
〰️〰️〰️〰️〰️
© @DjangoEx
لازم دونستم یک نکتهای رو بگم، درآمد شمارو فقط یک نفر مشخص میکنه و اون هم کسی هست که هرروز توی آینه بهش نگاه میکنید. پس سعی کنید اون آدمی که هرروز توی آینه میبینید رو دوست داشته باشید و برای موفق شدنش تلاش کنید:)
درنهایت اینکه باعث خوشحالی من هست ببینم هر کدومتون به درآمدهای بالا و موفقیت های بیشمار برسه و به قول خودمون happy developer باشه. 😊🙏
〰️〰️〰️〰️〰️
© @DjangoEx
[1/2]
✔️ پاسخ سوال: در تصویر 1 لیستی به نام a به طول 5 و محتوای object ایجاد کردهایم. اگر به نمایش این لیست دقت کنید متوجه خواهید شد که تمامی اشیاء موجود در لیست a دارای یک آدرس یکسان در memory هستند. درواقع پایتون در این حالت برای جلوگیری از ساختن یک شئ ثابت به تعداد زیاد، اول یک نمونه از آنرا ساخته و سپس تمامی اعضای آرایه را به آن ارجاع (reference) میدهد. اگر قطعه کد
را اجرا کنیم خروجی 6 (رفرنس) را برمیگرداند. مقدار 5 مورد انتظار است اما آن یک واحد اضافه به دلیل رفرنس موقتی است به عنوان ورودی تابع
اما در حالت دوم داخل loop هربار یک شئ ایجاد میشود و آدرسها تغییر میکند. این موضوع زمانی که قصد مقداردهی اولیه یک لیست با حجم بالا را داریم، هزینه زمانی و حافظهای زیادی دارد.
دلیل تفاوت حجم لیست a و b در حافظه
با دقت به تصویر 2 متوجه خواهید شد که با تعریف لیست a به روش اول، تقریبا حجم 136 بایت در حافظه اشغال شده اما این مقدار برای لیست b برابر 184 میباشد.
〰️〰️〰️〰️〰️
© @DjangoEx
✔️ پاسخ سوال: در تصویر 1 لیستی به نام a به طول 5 و محتوای object ایجاد کردهایم. اگر به نمایش این لیست دقت کنید متوجه خواهید شد که تمامی اشیاء موجود در لیست a دارای یک آدرس یکسان در memory هستند. درواقع پایتون در این حالت برای جلوگیری از ساختن یک شئ ثابت به تعداد زیاد، اول یک نمونه از آنرا ساخته و سپس تمامی اعضای آرایه را به آن ارجاع (reference) میدهد. اگر قطعه کد
sys.getrefcount(a[0])
را اجرا کنیم خروجی 6 (رفرنس) را برمیگرداند. مقدار 5 مورد انتظار است اما آن یک واحد اضافه به دلیل رفرنس موقتی است به عنوان ورودی تابع
getrefcount
ساخته شده است.اما در حالت دوم داخل loop هربار یک شئ ایجاد میشود و آدرسها تغییر میکند. این موضوع زمانی که قصد مقداردهی اولیه یک لیست با حجم بالا را داریم، هزینه زمانی و حافظهای زیادی دارد.
دلیل تفاوت حجم لیست a و b در حافظه
با دقت به تصویر 2 متوجه خواهید شد که با تعریف لیست a به روش اول، تقریبا حجم 136 بایت در حافظه اشغال شده اما این مقدار برای لیست b برابر 184 میباشد.
〰️〰️〰️〰️〰️
© @DjangoEx
[2/2]
در روش اول نوع شئ و طول آرایه مشخص است اما در خصوص روش دوم موضوعی که باید به آن دقت کنیم نحوه کارکرد dynamic list و append در پایتون است. این ساختار به ما کمک میکند که بدون تعریف طول ثابت برای آرایه، مقادیری به آن اضافه و حذف کنیم و همانطور که از تصویر 2 نتیجه میشود، پایتون به طور خودکار حجم فضای اشغال شده برای آرایه را افزایش میدهد. میزان افزایش حجم همیشه بیشتر از حجم مورد نیاز برای رفرنسهای افزودهشده است و در نتیجه حجم نهایی لیست b بیشتر از حالت واقعی یعنی 136 بایت است.
برای مطالعه بیشتر درباره رفرنسها در پایتون میتوانید منابع زیر را مطالعه کنید.
https://www.pythontutorial.net/advanced-python/python-references/
https://runestone.academy/runestone/books/published/thinkcspy/Lists/ObjectsandReferences.html
https://www.educba.com/python-references/
#python #references #list
〰️〰️〰️〰️〰️
© @DjangoEx
در روش اول نوع شئ و طول آرایه مشخص است اما در خصوص روش دوم موضوعی که باید به آن دقت کنیم نحوه کارکرد dynamic list و append در پایتون است. این ساختار به ما کمک میکند که بدون تعریف طول ثابت برای آرایه، مقادیری به آن اضافه و حذف کنیم و همانطور که از تصویر 2 نتیجه میشود، پایتون به طور خودکار حجم فضای اشغال شده برای آرایه را افزایش میدهد. میزان افزایش حجم همیشه بیشتر از حجم مورد نیاز برای رفرنسهای افزودهشده است و در نتیجه حجم نهایی لیست b بیشتر از حالت واقعی یعنی 136 بایت است.
برای مطالعه بیشتر درباره رفرنسها در پایتون میتوانید منابع زیر را مطالعه کنید.
https://www.pythontutorial.net/advanced-python/python-references/
https://runestone.academy/runestone/books/published/thinkcspy/Lists/ObjectsandReferences.html
https://www.educba.com/python-references/
#python #references #list
〰️〰️〰️〰️〰️
© @DjangoEx
✔️ دوستانی که زبان انگلیسیتون خوب نیست،
برید توی کانال یوتوب این ۳ تا خانم و زبان انگلیسی رو یاد بگیرید تا وقتی خطا میخورید بجای اینکه منتظر باشید یک نفر پیدا بشه و به سوالتون پاسخ بده، خودتون بتونید سرچ کنید و یک مقاله بخونید و مشکل رو حل کنید.
Fara Zaban: https://www.youtube.com/c/FaraZaban
Paria Akhavass: https://www.youtube.com/c/PariaAkhavass
EnglishTurbo: https://www.youtube.com/c/EnglishTurbo
انگلیش توربو دوره های زیادی توی سایتش و اینستاگرام فعالی داره، دو تای اول هم کانال یوتوب پرمحتوا و خوبی دارن
#زبان_انگلیسی
〰️〰️〰️〰️〰️
© @DjangoEx
برید توی کانال یوتوب این ۳ تا خانم و زبان انگلیسی رو یاد بگیرید تا وقتی خطا میخورید بجای اینکه منتظر باشید یک نفر پیدا بشه و به سوالتون پاسخ بده، خودتون بتونید سرچ کنید و یک مقاله بخونید و مشکل رو حل کنید.
Fara Zaban: https://www.youtube.com/c/FaraZaban
Paria Akhavass: https://www.youtube.com/c/PariaAkhavass
EnglishTurbo: https://www.youtube.com/c/EnglishTurbo
انگلیش توربو دوره های زیادی توی سایتش و اینستاگرام فعالی داره، دو تای اول هم کانال یوتوب پرمحتوا و خوبی دارن
#زبان_انگلیسی
〰️〰️〰️〰️〰️
© @DjangoEx
✔️ دیجیتال نومد یا چادرنشینی دیجیتال
دیجیتال نومد سبک جالبی از زندگی هست که مفهومش از سال ۱۹۹۷ و با کتاب Digital Nomad وارد صنعت شد. به کسی که زندگی او در سفر میگذرد و عملا جای ثابتی (خانه) برای زندگی ندارد و از طریق اینترنت و تکنولوژی کسب درآمد میکند، دیجیتال نومد میگویند.
برای آشنایی بیشتر میتونید این مستند رو ببینید
👉 Link: https://youtu.be/iXGtx-hroKE
#digitalnomad
〰️〰️〰️〰️〰️
© @DjangoEx
دیجیتال نومد سبک جالبی از زندگی هست که مفهومش از سال ۱۹۹۷ و با کتاب Digital Nomad وارد صنعت شد. به کسی که زندگی او در سفر میگذرد و عملا جای ثابتی (خانه) برای زندگی ندارد و از طریق اینترنت و تکنولوژی کسب درآمد میکند، دیجیتال نومد میگویند.
برای آشنایی بیشتر میتونید این مستند رو ببینید
👉 Link: https://youtu.be/iXGtx-hroKE
#digitalnomad
〰️〰️〰️〰️〰️
© @DjangoEx
YouTube
Working online and traveling the world - digital nomads | DW Documentary
Working online whilst traveling the world sounds like a dream job for many people. But what exactly is a digital nomad? Pete and Supi live as digital nomads.
They travel the world permanently, work on the road and are always online. Their lives epitomize…
They travel the world permanently, work on the road and are always online. Their lives epitomize…
google_chegone_kar_mikonad_chapter28
navaar.ir
✔️ با کارمندانی که میخواهند شرکت را ترک کنند، چه باید کرد؟
بخش زیبایی از کتاب How Google Works (گوگل چگونه کار میکند)، قسمت ۲۸
〰️〰️〰️〰️〰️
© @DjangoEx
بخش زیبایی از کتاب How Google Works (گوگل چگونه کار میکند)، قسمت ۲۸
〰️〰️〰️〰️〰️
© @DjangoEx
👍1
✔️استخدام برنامه نویس Backend:
ما در تراز به دنبال یک توسعهدهندهی سمت سرور هستیم که با هم بتونیم سرویسمون رو توسعه بدیم.
+ موارد لازم :
-تسلط به Python و Django
-آشنایی با Class Based Views در Django
-آشنایی با مفاهیم اصلی پایگاه داده
-آشنایی با مفاهیم شیگرایی
-همکاری در کل چرخهی حیات تولید سیستم
-طراحی و توسعه کدهای تمیز با قابلیت استفاده در آینده
-مشتاق به یادگیری و کسب دانش روز
-دارای روحیه کار تیمی
-توانایی مدیریت زمان
-آشنایی با Git
-مسلط به فریمورک Django REST Framework
-آشنایی با الگوهای طراحی
-آشنایی با استک (ELK (Elasticsearch, Logstash, Kibana
-مسلط به MongoDB-Postgres
-آشنایی با Celery
-آشنایی با مفاهیم DevOps
-آشنایی با مفاهیم توسعه چابک
-آشنایی با تحلیل و طراحی سیستمها
+محدوده: غرب تهران - طرشت
+نوع همکاری: تمام وقت و حضوری
👉🏻Link: https://jobinja.ir/companies/taraz-elms/jobs/RVDx/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-django-%D8%AF%D8%B1-%D9%87%D9%88%D8%B4%D9%85%D9%86%D8%AF-%D9%86%D9%88%D8%A2%D9%88%D8%B1%D8%A7%D9%86-%D9%81%D8%B1%D8%AF%D8%A7
〰〰〰〰〰〰
© @DjangoEx
ما در تراز به دنبال یک توسعهدهندهی سمت سرور هستیم که با هم بتونیم سرویسمون رو توسعه بدیم.
+ موارد لازم :
-تسلط به Python و Django
-آشنایی با Class Based Views در Django
-آشنایی با مفاهیم اصلی پایگاه داده
-آشنایی با مفاهیم شیگرایی
-همکاری در کل چرخهی حیات تولید سیستم
-طراحی و توسعه کدهای تمیز با قابلیت استفاده در آینده
-مشتاق به یادگیری و کسب دانش روز
-دارای روحیه کار تیمی
-توانایی مدیریت زمان
-آشنایی با Git
-مسلط به فریمورک Django REST Framework
-آشنایی با الگوهای طراحی
-آشنایی با استک (ELK (Elasticsearch, Logstash, Kibana
-مسلط به MongoDB-Postgres
-آشنایی با Celery
-آشنایی با مفاهیم DevOps
-آشنایی با مفاهیم توسعه چابک
-آشنایی با تحلیل و طراحی سیستمها
+محدوده: غرب تهران - طرشت
+نوع همکاری: تمام وقت و حضوری
👉🏻Link: https://jobinja.ir/companies/taraz-elms/jobs/RVDx/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-django-%D8%AF%D8%B1-%D9%87%D9%88%D8%B4%D9%85%D9%86%D8%AF-%D9%86%D9%88%D8%A2%D9%88%D8%B1%D8%A7%D9%86-%D9%81%D8%B1%D8%AF%D8%A7
〰〰〰〰〰〰
© @DjangoEx
جابینجا، شغلی رویایی خود را پیدا کنید
استخدام برنامهنویس Django در هوشمند نوآوران فردا | جابینجا
استخدام برای فرصت شغلی برنامهنویس Django در Hooshmand Noavaran Farda ,
آشنایی با Class Based Views در Django آشنایی با مفاهیم اصلی پایگاه داده آشنایی با مفاهیم شیگ...
آشنایی با Class Based Views در Django آشنایی با مفاهیم اصلی پایگاه داده آشنایی با مفاهیم شیگ...
یکی از مشکلات خیلی بزرگ پایتون در زمینه مالتی تریدینگ وجود چیزی به اسم GIL که اوضاع رو برامون سخت میکنه و تقریبا باعث شده توی multi threading دستمون در مقایسه با زبان های دیگه خیلی باز نباشه . در اتفاقی عجیب اقای sam gross یه white paper ( همون proposal ) منتشر کردن مبنی بر حذف GIL , که اگه براتون جالب میتونین توی لینک زیر بخونین :
https://docs.google.com/document/u/0/d/18CXhDb1ygxg-YXNBJNzfzZsDFosB5e6BfnXLlejd9l0/mobilebasic
و در لینک زیر میتونین نتیجه بنچمارک که گرفته شده رو ببینید :
https://gist.github.com/colesbury/8479ee0246558fa1ab0f49e4c01caeed
یه چیز خیلی عجیب اینکه ۳۹۶ درصد سرعت در ۴ تا thread افزایش پیدا کرده .
https://docs.google.com/document/u/0/d/18CXhDb1ygxg-YXNBJNzfzZsDFosB5e6BfnXLlejd9l0/mobilebasic
و در لینک زیر میتونین نتیجه بنچمارک که گرفته شده رو ببینید :
https://gist.github.com/colesbury/8479ee0246558fa1ab0f49e4c01caeed
یه چیز خیلی عجیب اینکه ۳۹۶ درصد سرعت در ۴ تا thread افزایش پیدا کرده .
یه اشتباهی داشت ، اون قسمت گفته بود async که خوب دوستان اشاره کردن مربوط به multi threading هست ، اصلاح شد.
ممنون از :
@ShahriarShariati
ممنون از :
@ShahriarShariati
✔️ مکانیزم intern در پایتون چیست؟
از آنجایی که مقایسه دو رشته از طریق آدرس مموری(is) بسیار سریع تر
از مقایسه کاراکتر با کارکتر آنها(==) است، پایتون برای بهینه سازی، بعضی از رشته ها را مانند اسامی متغیر ها، توابع و کلاس های موجود در کد و همچنین بعضی رشته های پرکاربرد و کوتاه را intern میکند؛ یعنی تمامی رشته های با یک مقدار برابر به یک خانه مشترک در حافظه اشاره می کنند و بدین ترتیب می توان از is برای مقایسه آنها استفاده کرد. همچنین با استفاده از sys.intern می توان به صورت دستی رشته های دلخواه را intern کرد که زمانی که با داده های حجیم و تکراری در کاربرد هایی مانند NLP سر و کار داریم می تواند باعث بهبود عملکرد شود.
〰️〰️〰️〰️〰️
© @DjangoEx
از آنجایی که مقایسه دو رشته از طریق آدرس مموری(is) بسیار سریع تر
از مقایسه کاراکتر با کارکتر آنها(==) است، پایتون برای بهینه سازی، بعضی از رشته ها را مانند اسامی متغیر ها، توابع و کلاس های موجود در کد و همچنین بعضی رشته های پرکاربرد و کوتاه را intern میکند؛ یعنی تمامی رشته های با یک مقدار برابر به یک خانه مشترک در حافظه اشاره می کنند و بدین ترتیب می توان از is برای مقایسه آنها استفاده کرد. همچنین با استفاده از sys.intern می توان به صورت دستی رشته های دلخواه را intern کرد که زمانی که با داده های حجیم و تکراری در کاربرد هایی مانند NLP سر و کار داریم می تواند باعث بهبود عملکرد شود.
〰️〰️〰️〰️〰️
© @DjangoEx
Django Expert
✔️ مکانیزم intern در پایتون چیست؟ از آنجایی که مقایسه دو رشته از طریق آدرس مموری(is) بسیار سریع تر از مقایسه کاراکتر با کارکتر آنها(==) است، پایتون برای بهینه سازی، بعضی از رشته ها را مانند اسامی متغیر ها، توابع و کلاس های موجود در کد و همچنین بعضی رشته…
✔️ پیرو این نکته خوب که سید عزیز اشاره کرد. دوستان سوال پرسیدن که چرا مقایسه دوم خروجی False داده. ببینید کامپایلر CPython برای بهینگی در مصرف حافظه، وقتی یک رشته جدید (یا برخی دیگر از آبجکتها) تعریف میشه. مقدار اون رو با مقادیر موجود در حافظه مقایسه میکنه و بجای اشغال کردن مجدد حافظه، رفرنسی از دادههای قبلی در memory رو برمیگردونه و اینطوری برنامه رو بهینهتر میکنه.
اما آیا این اتفاق به طور خودکار برای هرنوع رشتهای میوفته؟ خب جواب نه است. این اتفاق فقط برای شئهایی از نوع رشته میوفته که:
1. کمتر از 20 کارکتر باشن و از ادغام چند رشته تشکیل نشده باشن.
2. رشته باید فقط شامل حروف ASCII، اعداد و underscore باشد (در مثال دوم از فاصله استفاده شده و به همین دلیل نتیجه مقایسه False است).
3. به اصطلاح compile-time constant باشن. یعنی چی؟ یعنی فقط رشتههایی که به طور ثابت در طول رانتایم تعریف میشن (مثال اول). اما اگر این رشته توسط یک عملگر دیگه تولید بشه (مثل توابع، متدها و...) عملیات intern به طور خودکار براش اتفاق نمیافتده و اینکار باید دستی صورت بگیره.
برای مطالعه بیشتر به این مقاله مراجعه کنید.
〰️〰️〰️〰️〰️
© @DjangoEx
اما آیا این اتفاق به طور خودکار برای هرنوع رشتهای میوفته؟ خب جواب نه است. این اتفاق فقط برای شئهایی از نوع رشته میوفته که:
1. کمتر از 20 کارکتر باشن و از ادغام چند رشته تشکیل نشده باشن.
2. رشته باید فقط شامل حروف ASCII، اعداد و underscore باشد (در مثال دوم از فاصله استفاده شده و به همین دلیل نتیجه مقایسه False است).
3. به اصطلاح compile-time constant باشن. یعنی چی؟ یعنی فقط رشتههایی که به طور ثابت در طول رانتایم تعریف میشن (مثال اول). اما اگر این رشته توسط یک عملگر دیگه تولید بشه (مثل توابع، متدها و...) عملیات intern به طور خودکار براش اتفاق نمیافتده و اینکار باید دستی صورت بگیره.
برای مطالعه بیشتر به این مقاله مراجعه کنید.
〰️〰️〰️〰️〰️
© @DjangoEx
Forwarded from DLeX: AI Python (Farzad)
موقعیتهای تحصیلی و کاری از این پس در این کانال تلگرامی منتشر میگردد دوستان خودتون را به این کانال دعوت کنید.
👇👇
🔰 https://t.me/DLeX_Apply
👇👇
🔰 https://t.me/DLeX_Apply
با سلام و احترام خدمت همراهان عزیز Django Expert 🌹❤️
عزیزانی که کتاب فارسی آموزش کاربردی جنگو از نشر پندارپارس را تا قبل از تاریخ 15مهر ماه تهیه کرده اند، حتماً تصحیحات زیر را در صفحات اشاره شده لحاظ کنند.
عزیزانی هم که از تاریخ 20 مهر ماه به بعد اين کتاب کاربردی را سفارش داده اند، دیگر نیازی به بررسی و اعمال ندارند. چون تصحیحات زیر در چاپ مجدد کتاب برطرف شده است.
🧲 صفحه 493:
بجای کلمه path باید کلمه re_path نوشته شود. خط درست:
re_path (r'^articles/(?P<artid>[-\w]+)/comments/$', comments_views.CommentList.as_view()),
🧲 صفحه 67و68:
نام متغیرهای date و datetime باید به هر نام دلخواه دیگری تغییر یابند. چون در پایتون، توابع/ماژول های کلیدی (keyword) به نام های date و datetime وجود دارند. خط درست:
#### Example-2:
from datetime import date
from django.utils import timezone
class Store (models.Model):
......
my_date=models.DateField (default=date.today) 👈
my_datetime=models.DateTimeField (default=timezone.now) 👈
🧲 صفحه 44:
خط مربوط به تعریف مسیر /admin/doc باید قبل از مسیر /admin باشد. خط درست:
urlpatterns = [
path ('admin/doc/', include('django.contrib.admindocs.urls')),
path ('admin/', admin.site.urls),
path ('', include('coffe_app.urls')),
]
🧲 صفحه 56 (تصحیح توضیح فیلد DecimalField):
یک فیلد از نوع اعشاری (deciaml) برای ذخیره کردن مقادیر از جنس اعشاری عدد در دیتابیس ایجاد میکند.
مقدار X درحال اشاره به کل عدد (صحیح و اعشار) و مقدار Y درحال اشاره به بخش اعشار عدد است. مثال:
models.DecimalField (max_digits=X, decimal_places=Y)
models.DecimalField (max_digits=3, decimal_places=2)
If you define max_digits to be 3 and decimal_places to be 2, the largest number you can save is 9.99 ==> It has 3 digits and 2 decimal places.
models.DecimalField (max_digits=12, decimal_places=4)
If you define max_digits to be 12 and decimal_places to be 4, the largest number you can save is 99999999.9999 ==> It has 12 digits and 4 decimal places.
🧲 صفحه 57:
در آخرین ردیف جدول این صفحه، بجای models اشتباهاً options نوشته شده است. خط درست:
models.SmallIntegerField()
🧲 صفحه 58:
نوع داده ()CommonSeparatedIntegerField در نسخه 1.9 جنگو حذف شده است و دیگر قابل استفاده نیست.
🧲 صفحه 37 ((به منظور ایجاد/ساخت پروژه جنگویی برای نخستین بار باید از دستور django-admin استفاده گردد)). خط زیر غیر فنی است:
(azimzadeh_env1) ...\azimzadeh_env1> python manage.py startproject coffehouse
خط درست و اصولی میشود:
(azimzadeh_env1) ...\azimzadeh_env1> django-admin startproject coffehouse
🧲 صفحه 38 (توضیح دقیق تر پوشه migrations در انتهای صفحه):
با اجرای دستور "python manage.py makemigrations"، تعدادی فایل پایتونی در پوشه migrations ایجاد میشوند که از آنها برای تبدیل مدلهای جنگو (محتوای فایل models.py) به ساختارهای DDL و DML دیتابیس استفاده میشود. فرآیند تبدیل مدلها به ساختار DDL و DML بهوسیله دستور "python manage.py migrate" انجام میشود.
🧲 صفحه 86 (تصحیح توضیح گزینه/صفت managed):
در خط آخر این بولِت، بجای managed=False اشتباها managed=True نوشته شده است. خط درست می شود:
اگر از قبل جدولی برای مدلتان در دیتابیس طراحی کردهاید و نمیخواهید جنگو مجدداً در تنظیمات جدول شما تغییراتی اعمال کند، بهترین راهکار استفاده از حالت managed=False در کلاس Meta مدل است.
🧲 صفحه 289:
در قالب milani_test.html اشتباها بجای imageAD نوشته شده image :
<img src="{{ adimage.image.url }}" alt=''/>
خط درست می شود:
<img src="{{ adimage.imageAD.url }}" alt=''/>
🧲 صفحه 96:
درون متد/تابع (....)filter در هر سـه کلاس سفارشی مدیرمدل، بجای story_type اشتباها story نوشته شده است.
🧲 صفحه 100:
کلمه های Place و Restaurant جابجا نوشته شدند. خط درست:
گزینه/آرگومان on_delete با مقدار models.CASCADE به جنگو دستور میدهد که اگر رکورد X از مدل Place در دیتابیس حذف شد، رکوردی هم که در مدل Restaurant با رکورد X وابستگی و ارتباط دارد باید از دیتابیس حذف گردد (حذف آبشاری).
🧲 صفحه 389:
در کدهای Option2، بجای obj.state اشتباها self.state نوشته شده است.
خط درست: ()return '{} / {}'.format (obj.city, obj.state).upper
همچنین کلمه uppercase در کدهای Option2 و Option3 باید به upper تغییر نام داده شوند. مثال: تبدیل uppercase_two_fields به upper_two_fields
عزیزانی که کتاب فارسی آموزش کاربردی جنگو از نشر پندارپارس را تا قبل از تاریخ 15مهر ماه تهیه کرده اند، حتماً تصحیحات زیر را در صفحات اشاره شده لحاظ کنند.
عزیزانی هم که از تاریخ 20 مهر ماه به بعد اين کتاب کاربردی را سفارش داده اند، دیگر نیازی به بررسی و اعمال ندارند. چون تصحیحات زیر در چاپ مجدد کتاب برطرف شده است.
🧲 صفحه 493:
بجای کلمه path باید کلمه re_path نوشته شود. خط درست:
re_path (r'^articles/(?P<artid>[-\w]+)/comments/$', comments_views.CommentList.as_view()),
🧲 صفحه 67و68:
نام متغیرهای date و datetime باید به هر نام دلخواه دیگری تغییر یابند. چون در پایتون، توابع/ماژول های کلیدی (keyword) به نام های date و datetime وجود دارند. خط درست:
#### Example-2:
from datetime import date
from django.utils import timezone
class Store (models.Model):
......
my_date=models.DateField (default=date.today) 👈
my_datetime=models.DateTimeField (default=timezone.now) 👈
🧲 صفحه 44:
خط مربوط به تعریف مسیر /admin/doc باید قبل از مسیر /admin باشد. خط درست:
urlpatterns = [
path ('admin/doc/', include('django.contrib.admindocs.urls')),
path ('admin/', admin.site.urls),
path ('', include('coffe_app.urls')),
]
🧲 صفحه 56 (تصحیح توضیح فیلد DecimalField):
یک فیلد از نوع اعشاری (deciaml) برای ذخیره کردن مقادیر از جنس اعشاری عدد در دیتابیس ایجاد میکند.
مقدار X درحال اشاره به کل عدد (صحیح و اعشار) و مقدار Y درحال اشاره به بخش اعشار عدد است. مثال:
models.DecimalField (max_digits=X, decimal_places=Y)
models.DecimalField (max_digits=3, decimal_places=2)
If you define max_digits to be 3 and decimal_places to be 2, the largest number you can save is 9.99 ==> It has 3 digits and 2 decimal places.
models.DecimalField (max_digits=12, decimal_places=4)
If you define max_digits to be 12 and decimal_places to be 4, the largest number you can save is 99999999.9999 ==> It has 12 digits and 4 decimal places.
🧲 صفحه 57:
در آخرین ردیف جدول این صفحه، بجای models اشتباهاً options نوشته شده است. خط درست:
models.SmallIntegerField()
🧲 صفحه 58:
نوع داده ()CommonSeparatedIntegerField در نسخه 1.9 جنگو حذف شده است و دیگر قابل استفاده نیست.
🧲 صفحه 37 ((به منظور ایجاد/ساخت پروژه جنگویی برای نخستین بار باید از دستور django-admin استفاده گردد)). خط زیر غیر فنی است:
(azimzadeh_env1) ...\azimzadeh_env1> python manage.py startproject coffehouse
خط درست و اصولی میشود:
(azimzadeh_env1) ...\azimzadeh_env1> django-admin startproject coffehouse
🧲 صفحه 38 (توضیح دقیق تر پوشه migrations در انتهای صفحه):
با اجرای دستور "python manage.py makemigrations"، تعدادی فایل پایتونی در پوشه migrations ایجاد میشوند که از آنها برای تبدیل مدلهای جنگو (محتوای فایل models.py) به ساختارهای DDL و DML دیتابیس استفاده میشود. فرآیند تبدیل مدلها به ساختار DDL و DML بهوسیله دستور "python manage.py migrate" انجام میشود.
🧲 صفحه 86 (تصحیح توضیح گزینه/صفت managed):
در خط آخر این بولِت، بجای managed=False اشتباها managed=True نوشته شده است. خط درست می شود:
اگر از قبل جدولی برای مدلتان در دیتابیس طراحی کردهاید و نمیخواهید جنگو مجدداً در تنظیمات جدول شما تغییراتی اعمال کند، بهترین راهکار استفاده از حالت managed=False در کلاس Meta مدل است.
🧲 صفحه 289:
در قالب milani_test.html اشتباها بجای imageAD نوشته شده image :
<img src="{{ adimage.image.url }}" alt=''/>
خط درست می شود:
<img src="{{ adimage.imageAD.url }}" alt=''/>
🧲 صفحه 96:
درون متد/تابع (....)filter در هر سـه کلاس سفارشی مدیرمدل، بجای story_type اشتباها story نوشته شده است.
🧲 صفحه 100:
کلمه های Place و Restaurant جابجا نوشته شدند. خط درست:
گزینه/آرگومان on_delete با مقدار models.CASCADE به جنگو دستور میدهد که اگر رکورد X از مدل Place در دیتابیس حذف شد، رکوردی هم که در مدل Restaurant با رکورد X وابستگی و ارتباط دارد باید از دیتابیس حذف گردد (حذف آبشاری).
🧲 صفحه 389:
در کدهای Option2، بجای obj.state اشتباها self.state نوشته شده است.
خط درست: ()return '{} / {}'.format (obj.city, obj.state).upper
همچنین کلمه uppercase در کدهای Option2 و Option3 باید به upper تغییر نام داده شوند. مثال: تبدیل uppercase_two_fields به upper_two_fields
✔️ قسمت دوم پیام ادامه اصلاحات کتاب جنگو
🧲 صفحه 457:
متد ()get_user اشتباها درون متد ()authenticate نوشته شده است.
متد ()get_user خودش یک متد مستقل جنگویی است.
لینک های مرتبط به کتاب فارسی *آموزش کاربردی جنگو*:
➡️https://www.pendarepars.com/book/کتاب-آموزش-کاربردي-جنگو-django-قويترين-فريمورک-توسعه-وب-اپليکيشن-پايتون/
➡️https://www.pendarepars.com/book/pdf/4258
➡️https://www.pendarepars.com/contact/
➡️https://t.me/joinchat/msVarKgCNDMyMDY0
➡️https://t.me/django_persian
باتشکر از جناب آقای مهندس عظیم زاده
Thanks to: @wellcomebackdear
〰️〰️〰️〰️〰️
© @DjangoEx
🧲 صفحه 457:
متد ()get_user اشتباها درون متد ()authenticate نوشته شده است.
متد ()get_user خودش یک متد مستقل جنگویی است.
لینک های مرتبط به کتاب فارسی *آموزش کاربردی جنگو*:
➡️https://www.pendarepars.com/book/کتاب-آموزش-کاربردي-جنگو-django-قويترين-فريمورک-توسعه-وب-اپليکيشن-پايتون/
➡️https://www.pendarepars.com/book/pdf/4258
➡️https://www.pendarepars.com/contact/
➡️https://t.me/joinchat/msVarKgCNDMyMDY0
➡️https://t.me/django_persian
باتشکر از جناب آقای مهندس عظیم زاده
Thanks to: @wellcomebackdear
〰️〰️〰️〰️〰️
© @DjangoEx
Django Expert
✔️ سوال: خروجی کد پایتونیک بالا را به صورت ذهنی بدست آورید. سطح: مقدماتی credit: Ben Kurtovic #fun #python 〰️〰️〰️〰️〰️ © @DjangoEx