چرا توی جنگو باید اسم پوشه Template رو تکرار کنیم؟
اینجوری:
(یعنی یک بار اسم اپ، و دوباره داخل تمپلیت هم همون اسم!)
مشکل چیه؟
فرض کن دو تا اپ داری: polls و blog. هر دو هم یه فایل index.html دارن. جنگو برای پیدا کردن تمپلیت، میره توی همه پوشهها میگرده و اولین فایلی که اسمش match کنه رو برمیداره!
یعنی ممکنه کد اپ polls رو اجرا کنی ولی صفحهی blog به کاربر نشون داده بشه! 🤦♂️
✅ راهحل چیه؟ (Namespacing)
باید برای تمپلیتها «فضای نام» (Namespace) درست کنیم. یعنی فایلها رو داخل یک زیرپوشهی همنام با اپ بذاریم:
💡 نتیجه:
الان توی views.py وقتی مینویسی
جنگو دقیقاً میدونه باید کدوم فایل رو باز کنه و دیگه هیچ تداخلی پیش نمیاد.
پس یادت باشه: همیشه تمپلیتها رو داخل پوشهی همنام اپ قرار بده!
#جنگو
@MPL_Code
اینجوری:
polls/templates/polls/index.html
(یعنی یک بار اسم اپ، و دوباره داخل تمپلیت هم همون اسم!)
مشکل چیه؟
فرض کن دو تا اپ داری: polls و blog. هر دو هم یه فایل index.html دارن. جنگو برای پیدا کردن تمپلیت، میره توی همه پوشهها میگرده و اولین فایلی که اسمش match کنه رو برمیداره!
یعنی ممکنه کد اپ polls رو اجرا کنی ولی صفحهی blog به کاربر نشون داده بشه! 🤦♂️
✅ راهحل چیه؟ (Namespacing)
باید برای تمپلیتها «فضای نام» (Namespace) درست کنیم. یعنی فایلها رو داخل یک زیرپوشهی همنام با اپ بذاریم:
📁 polls/templates/polls/index.html
📁 blog/templates/blog/index.html
💡 نتیجه:
الان توی views.py وقتی مینویسی
render(request, "polls/index.html")،
جنگو دقیقاً میدونه باید کدوم فایل رو باز کنه و دیگه هیچ تداخلی پیش نمیاد.
پس یادت باشه: همیشه تمپلیتها رو داخل پوشهی همنام اپ قرار بده!
#جنگو
@MPL_Code
Forwarded from ~حاشیه~ (Mina Barati)
بعد از حدود دو هفته فعالیت مداوم در لینکدین، به یه نتیجه جالب رسیدم:
@Hashaiha
هرچقدر بیشتر از مسیر پیشرفت، موفقیتها و کارهایی که انجام میدید منتشر کنید، بیشتر دیده میشید.#لینکدین
من توی این مدت چیزهای دیگهای هم از تجربههام نوشتم؛ چیزهایی که فکر میکردم شاید برای بقیه هم مفید باشه، اما خیلی دیده نشد.
ولی وقتی یک پروژه ساده رو به پایان رسوندم و نتیجهش رو منتشر کردم، بازدید خیلی بیشتری گرفت.
شاید به همین دلیله که ما در شبکههای اجتماعی، بیشتر موفقیتهای بقیه رو میبینیم تا شکستها، سردرگمیها و روزهای سختشون.
ما معمولاً نتیجهی مسیر آدمها رو میبینیم، نه تمام مسیری که طی کردن.
پس چیزی که در فضای مجازی میبینیم، لزوماً تمام واقعیت زندگی یا مسیر حرفهای یک نفر نیست؛ فقط بخشیه که تصمیم گرفته با بقیه به اشتراک بذاره.
@Hashaiha
یه تکنیک میخام بهتون بگم، در کنار اینکه زبان برنامه نویسی مورد نظرتون رو تخصصی یاد میگیرید، زبان انگلیسی تون هم تقویت میشه:
برید داکیومنت همون زبان رو بخونید شاید اوایل فکر کنید سخته و متوجه نشید ولی همین موضوع یه نکته داره ، مواردی که متوجه نمیشید رو با گوگل ترانسلت ترجمه کنید نوت برداری کنید، کلمه به کلمه و جمله به جمله همه رو تا درک نکردید و نفهمیدید به آسونی ازش نگذرید، اینطوری به دانش برنامه نویسی و زبان انگلیسی تون اضافه میشه،
البته هرچند AI هست و در موارد خیلی پیچیده میتونید ازش بخواید براتون توضیح ساده یی بده، ولی هیچی بنظر من جای روش های قدیمی و خاک خورده رو نمیگیره، این مسیر مداومت میخاد و شما تهش به پیر(متخصص) مسیر خودتون تبدیل میشید.
#تکنیک
@CodeCat_Dev
برید داکیومنت همون زبان رو بخونید شاید اوایل فکر کنید سخته و متوجه نشید ولی همین موضوع یه نکته داره ، مواردی که متوجه نمیشید رو با گوگل ترانسلت ترجمه کنید نوت برداری کنید، کلمه به کلمه و جمله به جمله همه رو تا درک نکردید و نفهمیدید به آسونی ازش نگذرید، اینطوری به دانش برنامه نویسی و زبان انگلیسی تون اضافه میشه،
البته هرچند AI هست و در موارد خیلی پیچیده میتونید ازش بخواید براتون توضیح ساده یی بده، ولی هیچی بنظر من جای روش های قدیمی و خاک خورده رو نمیگیره، این مسیر مداومت میخاد و شما تهش به پیر(متخصص) مسیر خودتون تبدیل میشید.
#تکنیک
@CodeCat_Dev
This media is not supported in your browser
VIEW IN TELEGRAM
اگه تو مسیر یادگیری هستی و نمیدونی گام بعدی تون چه چیزی یادبگیرید یا کلا کدوم مسیر رو برید این سایت عالیه:
roadmap.sh
و اگه پایتون رو انتخاب کردید و هدف بعدی تون جنگو هست این ریپو ادامه مسیر رو براتون چیده:
https://github.com/HHHMHA/django-roadmap
@CodeCat_Dev
roadmap.sh
و اگه پایتون رو انتخاب کردید و هدف بعدی تون جنگو هست این ریپو ادامه مسیر رو براتون چیده:
https://github.com/HHHMHA/django-roadmap
@CodeCat_Dev
Media is too big
VIEW IN TELEGRAM
از همون اول، برنامهنویسی رو انتخاب کردم چون از ساختن لذت میبردم.
از اون لحظهای که کدِ لعنتی بالاخره کار میکنه و یه چیزی از هیچ ساخته میشه — چیزی که قبلش وجود نداشت.
حالا هوش مصنوعی اومده و همه میگن «دیگه لازم نیست خودت کد بزنی».
میگن سریعتره، ارزونتره، بیخطاست.
شاید راست بگن. شاید بازار عوض شده. شاید کارفرماها دنبال سرعت باشن، نه سلیقه.
ولی من ترجیح میدم خودم این کار رو انجام بدم.
نه از سر لجبازی.
از سر عشق.
چون وقتی خودم مینویسم، میفهمم. وقتی میفهمم، رشد میکنم. وقتی رشد میکنم، زندهام.
میدونم آدمهایی هستن که مثل من فکر میکنن.
و اگه هم نباشن؟ برام مهم نیست.
حتی اگه باعث بشه کارفرما منو نخواد، حتی اگه بیکار بمونم —
باز هم همون کاری رو میکنم که بهش علاقه دارم.
چون موفقیت برای من یعنی رضایت خودم، نه فقط تأیید بازار.
🐾 @CodeCat_Dev
از اون لحظهای که کدِ لعنتی بالاخره کار میکنه و یه چیزی از هیچ ساخته میشه — چیزی که قبلش وجود نداشت.
حالا هوش مصنوعی اومده و همه میگن «دیگه لازم نیست خودت کد بزنی».
میگن سریعتره، ارزونتره، بیخطاست.
شاید راست بگن. شاید بازار عوض شده. شاید کارفرماها دنبال سرعت باشن، نه سلیقه.
ولی من ترجیح میدم خودم این کار رو انجام بدم.
نه از سر لجبازی.
از سر عشق.
چون وقتی خودم مینویسم، میفهمم. وقتی میفهمم، رشد میکنم. وقتی رشد میکنم، زندهام.
میدونم آدمهایی هستن که مثل من فکر میکنن.
و اگه هم نباشن؟ برام مهم نیست.
حتی اگه باعث بشه کارفرما منو نخواد، حتی اگه بیکار بمونم —
باز هم همون کاری رو میکنم که بهش علاقه دارم.
چون موفقیت برای من یعنی رضایت خودم، نه فقط تأیید بازار.
🐾 @CodeCat_Dev
امروز فهمیدم یکی از خطرناکترین دشمنان برنامهنویسها باگهای پیچیده نیستن؛ یه حرف بزرگ و کوچیک هست.
من توی مدل نوشته بودم:
Product
بعد توی Serializer با اعتمادبهنفس نوشتم 🤣
product
جنگو هم گفت: «پیشی جونم همچین فیلدی نداریم.»
من: «چطور نداریم؟ خودم ساختمش!»
جنگو : «آره، ولی اسمش Product ـه، نه product...»
البته این اشتباه منو اینطوری بهم نگفت دو ساعت سرش خودم رو به این در و اون در زدم
خلاصه چند ساعتی زندگیمو مرور کردم و فهمیدم تمام این مدت داشتم سر P و p با فریمورک بحث میکردم.
درس امروز:
پایتون به حروف بزرگ و کوچک رحم نمیکنه.
ایندو تا Product و product برای پایتون یکی نیستن.
یک حرف کوچیک، یک ارور بزرگ.
پ.ن: بنده این موضوع رو میدونستم ولی خب پیش میاد 🤣
🐾 @CodeCat_Dev
من توی مدل نوشته بودم:
Product
بعد توی Serializer با اعتمادبهنفس نوشتم 🤣
product
جنگو هم گفت: «پیشی جونم همچین فیلدی نداریم.»
من: «چطور نداریم؟ خودم ساختمش!»
جنگو : «آره، ولی اسمش Product ـه، نه product...»
البته این اشتباه منو اینطوری بهم نگفت دو ساعت سرش خودم رو به این در و اون در زدم
خلاصه چند ساعتی زندگیمو مرور کردم و فهمیدم تمام این مدت داشتم سر P و p با فریمورک بحث میکردم.
درس امروز:
پایتون به حروف بزرگ و کوچک رحم نمیکنه.
ایندو تا Product و product برای پایتون یکی نیستن.
یک حرف کوچیک، یک ارور بزرگ.
پ.ن: بنده این موضوع رو میدونستم ولی خب پیش میاد 🤣
🐾 @CodeCat_Dev
🐍 یه قابلیت کاربردی پایتون که باعث میشه کد تون تمیزتر بشه
تا حالا خواستید چند مقدار رو همزمان از یک لیست بردارید و شمارهی هر کدوم رو هم داشته باشید؟
بهجای این:
پایتون یک راه تمیزتر داره: enumerate() 👇
خروجی:
حتی میتونید شمارهگذاری رو از ۱ شروع کنید:
خروجی:
نکته: enumerate() وقتی خیلی کاربردیه که همزمان به خود مقدار و شماره/ایندکس آن نیاز دارید؛ بدون اینکه مجبور باشید با range(len(...)) کار کنید.
🐾@CodeCat_Dev
تا حالا خواستید چند مقدار رو همزمان از یک لیست بردارید و شمارهی هر کدوم رو هم داشته باشید؟
بهجای این:
names = ["Ali", "Sara", "Mina"]
for i in range(len(names)):
print(i, names[i])
پایتون یک راه تمیزتر داره: enumerate() 👇
names = ["Ali", "Sara", "Mina"]
for index, name in enumerate(names):
print(index, name)
خروجی:
0 Ali
1 Sara
2 Mina
حتی میتونید شمارهگذاری رو از ۱ شروع کنید:
for index, name in enumerate(names, start=1):
print(index, name)
خروجی:
1 Ali
2 Sara
3 Mina
نکته: enumerate() وقتی خیلی کاربردیه که همزمان به خود مقدار و شماره/ایندکس آن نیاز دارید؛ بدون اینکه مجبور باشید با range(len(...)) کار کنید.
🐾@CodeCat_Dev
شده بخوایید چند تا ترمینال تو VSCodeهمزمان باز کنید؟
اینجایی که تو عکس خط کشیدم اینکار رو خیلی تمیز انجام میده
🐾 @CodeCat_Dev
اینجایی که تو عکس خط کشیدم اینکار رو خیلی تمیز انجام میده
🐾 @CodeCat_Dev
𝐶𝑜𝑑𝑒 𝐶𝑎𝑡
Photo
نماد لینوکس، پنگوئنی به نام Tux است که چاق و نشسته به نظر میرسد. دلیل این طراحی ترکیبی از تاریخچه، طنز و نمادگرایی است:
۱. داستان انتخاب پنگوئن (۱۹۹۶):
لینوس توروالدز (خالق لینوکس) گفته بود که وقتی در استرالیا بوده، یک پنگوئن کوچک او را نوک زده و همین باعث شد به فکر استفاده از پنگوئن به عنوان نماد بیفتد. او این حیوان را «بامزه و دوستداشتنی» میدانست، برخلاف نمادهای ترسناک یا خیلی جدی مثل روباه یا عقاب که بعضی پیشنهاد داده بودند.
۲. چرا چاق و نشسته؟
· طراحی اولیه توسط لری ایوینگ (۱۹۹۶): او Tux را طراحی کرد و عمداً او را با شکم گرد و حالت نشسته کشید تا بیآزار، خودی و بامزه به نظر برسد، نه یک شکارچی یا موجود قدرتمند.
· طنز و فروتنی: پنگوئنها پرندههایی هستند که پرواز نمیکنند و روی زمین دستوپا چلفتیاند، اما در آب بسیار ماهرند. این استعارهای بود از اینکه لینوکس هم ممکن است در ابتدا ساده و بیادعا به نظر برسد، اما در عمل قدرتمند است.
· حالت نشسته: نشاندهنده آرامش، اعتماد به نفس و «آماده بودن» است، نه پرخاشگری.
۳. نام Tux:
از ترکیب Torvalds و Unix ساخته شده (یا به روایتی از Tuxedo، چون پنگوئنها شبیه کتوشلوار هستند).
۴. چرا چاق؟
در طراحیهای اولیه، اندام گرد و توپُر Tux باعث میشد قابل لمس و دوستانه باشد و از نمادهای خشن و نظامیگونه فاصله بگیرد. این با فلسفه متنباز (Open Source) که مبتنی بر همکاری و اجتماع است، همخوانی داشت.
خلاصه اینکه: Tux عمداً چاق، نشسته و بامزه طراحی شد تا حس صمیمیت، سادگی و قدرت آرام لینوکس را منتقل کند.
#لینوکس
🐾 @CodeCat_Dev
۱. داستان انتخاب پنگوئن (۱۹۹۶):
لینوس توروالدز (خالق لینوکس) گفته بود که وقتی در استرالیا بوده، یک پنگوئن کوچک او را نوک زده و همین باعث شد به فکر استفاده از پنگوئن به عنوان نماد بیفتد. او این حیوان را «بامزه و دوستداشتنی» میدانست، برخلاف نمادهای ترسناک یا خیلی جدی مثل روباه یا عقاب که بعضی پیشنهاد داده بودند.
۲. چرا چاق و نشسته؟
· طراحی اولیه توسط لری ایوینگ (۱۹۹۶): او Tux را طراحی کرد و عمداً او را با شکم گرد و حالت نشسته کشید تا بیآزار، خودی و بامزه به نظر برسد، نه یک شکارچی یا موجود قدرتمند.
· طنز و فروتنی: پنگوئنها پرندههایی هستند که پرواز نمیکنند و روی زمین دستوپا چلفتیاند، اما در آب بسیار ماهرند. این استعارهای بود از اینکه لینوکس هم ممکن است در ابتدا ساده و بیادعا به نظر برسد، اما در عمل قدرتمند است.
· حالت نشسته: نشاندهنده آرامش، اعتماد به نفس و «آماده بودن» است، نه پرخاشگری.
۳. نام Tux:
از ترکیب Torvalds و Unix ساخته شده (یا به روایتی از Tuxedo، چون پنگوئنها شبیه کتوشلوار هستند).
۴. چرا چاق؟
در طراحیهای اولیه، اندام گرد و توپُر Tux باعث میشد قابل لمس و دوستانه باشد و از نمادهای خشن و نظامیگونه فاصله بگیرد. این با فلسفه متنباز (Open Source) که مبتنی بر همکاری و اجتماع است، همخوانی داشت.
خلاصه اینکه: Tux عمداً چاق، نشسته و بامزه طراحی شد تا حس صمیمیت، سادگی و قدرت آرام لینوکس را منتقل کند.
#لینوکس
🐾 @CodeCat_Dev
مطمئناً براتون پیش اومده که یه کتابخانه یا پکیجی رو توی VSCode نصب کردید یا هر تغییراتی رو آوردی، ولی تغییرات اعمال نشده و نتونستید ازش استفاده کنید، و مجبور شدید IDE رو ببندید و دوباره باز کنید. ولی یه راه سریعتر هم هست.
رو بزنید و از منوی دستوری گزینهی
رو انتخاب کنید. همین کار حکم همون بستن و باز کردن VSCode رو داره، بدون اینکه پنجره رو از دست بدید.
پ.ن: طبق تصویر بالا میبینید قابلیتهای دیگهای هم هست که میتونید ازشون استفاده کنید.
#تکنیک
🐾 @CodeCat_Dev
Ctrl+Shift+P
رو بزنید و از منوی دستوری گزینهی
Python: Clear cache and reload the window
رو انتخاب کنید. همین کار حکم همون بستن و باز کردن VSCode رو داره، بدون اینکه پنجره رو از دست بدید.
پ.ن: طبق تصویر بالا میبینید قابلیتهای دیگهای هم هست که میتونید ازشون استفاده کنید.
#تکنیک
🐾 @CodeCat_Dev