Facebook Pixel
Searching...
فارسی
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Two Scoops of Django

Two Scoops of Django

Best Practices for Django 1.5
توسط Daniel Roy Greenfeld 2013 277 صفحات
4.22
100+ امتیازها
گوش دادن
گوش دادن

نکات کلیدی

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

"هنر ایجاد و نگهداری یک برنامه جنگو خوب این است که باید از فلسفه یونیکس کوتاه شده به گفته داگلاس مک‌ایلروی پیروی کند: 'برنامه‌هایی بنویسید که یک کار را انجام دهند و آن را به خوبی انجام دهند.'"

ساده نگه‌دارید. فلسفه طراحی جنگو بر سادگی، وضوح و اصل "خود را تکرار نکنید" (DRY) تأکید دارد. این مفاهیم را با نوشتن کد تمیز و خوانا که از دستورالعمل‌های سبک PEP 8 پیروی می‌کند، بپذیرید. از واردات نسبی صریح برای بهبود قابلیت حمل کد و جلوگیری از وابستگی‌های دایره‌ای استفاده کنید.

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

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

2. راه‌اندازی محیط بهینه جنگو با کنترل نسخه و محیط‌های مجازی

"یک مکان خوب برای ایجاد virtualenv برای این پروژه یک دایرکتوری جداگانه است که تمام virtualenvهای خود را برای تمام پروژه‌های پایتون خود نگه می‌دارید."

استفاده از کنترل نسخه. گیت محبوب‌ترین انتخاب برای پروژه‌های جنگو است. یک فایل .gitignore ایجاد کنید تا فایل‌های غیرضروری (مانند فایل‌های پایگاه داده و کد پایتون کامپایل شده) را از کنترل نسخه مستثنی کنید. زود و اغلب با پیام‌های تعهد معنادار که تغییرات انجام شده را توصیف می‌کنند، تعهد کنید.

محیط‌های مجازی. از virtualenv برای ایجاد محیط‌های پایتون ایزوله برای هر یک از پروژه‌های خود استفاده کنید. این کار از تضاد بین نسخه‌های بسته‌ها در پروژه‌های مختلف جلوگیری می‌کند. استفاده از virtualenvwrapper را برای مدیریت آسان‌تر چندین محیط مجازی در نظر بگیرید.

مدیریت وابستگی. از pip و فایل‌های requirements برای مدیریت وابستگی‌های پروژه خود استفاده کنید. فایل‌های requirements جداگانه برای محیط‌های مختلف (مثلاً توسعه، تولید) ایجاد کنید تا سازگاری در سراسر استقرارها را تضمین کنید. وابستگی‌های خود را به نسخه‌های خاصی پین کنید تا از شکست‌های غیرمنتظره به دلیل به‌روزرسانی بسته‌ها جلوگیری کنید.

3. ساختاردهی پروژه و برنامه‌های جنگو برای مقیاس‌پذیری و استفاده مجدد

"رابط مدیریت جنگو برای مدیران سایت طراحی شده است، نه کاربران نهایی."

چیدمان پروژه. از یک ساختار پروژه سازگار با جداسازی واضح نگرانی‌ها پیروی کنید. برنامه‌های جنگو، فایل‌های پیکربندی و دارایی‌های استاتیک خود را در مکان‌های منطقی قرار دهید. از یک رویکرد سه‌لایه استفاده کنید: ریشه مخزن، ریشه پروژه جنگو و ریشه پیکربندی.

طراحی برنامه. برنامه‌های کوچک و متمرکزی ایجاد کنید که عملکرد خاصی را مدیریت کنند. برنامه‌های خود را به وضوح نام‌گذاری کنید و از نام‌های مفرد برای مدل‌ها استفاده کنید (مثلاً "کاربر" به جای "کاربران"). برنامه‌های خود را تا حد امکان مستقل نگه‌دارید تا استفاده مجدد را ترویج دهید.

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

4. بهره‌گیری از ORM قدرتمند جنگو و بهترین شیوه‌های طراحی مدل

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

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

Querysets و مدیران. از ORM جنگو به طور مؤثر با بهره‌گیری از querysets و مدیران سفارشی استفاده کنید. کوئری‌های کارآمد با استفاده از select_related() و prefetch_related() بنویسید تا ضربات پایگاه داده را به حداقل برسانید. روش‌های مدیر سفارشی برای کوئری‌های پرکاربرد یا عملیات پیچیده ایجاد کنید.

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

5. تسلط بر نماهای مبتنی بر کلاس و فرم‌ها برای توسعه کارآمد

"قدرت CBVها به قیمت سادگی به دست می‌آید: CBVها با یک زنجیره ارث‌بری پیچیده همراه هستند که می‌تواند تا هشت کلاس فوق‌العاده در واردات داشته باشد."

نماهای مبتنی بر کلاس (CBVها). درک کنید که چه زمانی از نماهای مبتنی بر تابع در مقابل نماهای مبتنی بر کلاس استفاده کنید. از CBVها برای عملیات CRUD رایج استفاده کنید و از mixinها برای ترکیب قابلیت‌های نمای قابل استفاده مجدد استفاده کنید. منطق نما را از URLconfs جدا نگه‌دارید تا نگهداری بهتر شود.

فرم‌ها. از سیستم فرم جنگو برای همه ورودی‌های کاربر و اعتبارسنجی استفاده کنید. از ModelForms هنگام کار مستقیم با داده‌های مدل استفاده کنید. اعتبارسنجی فیلد فرم سفارشی و روش‌های پاکسازی را در صورت نیاز پیاده‌سازی کنید. از formsetها برای مدیریت چندین فرم در یک صفحه استفاده کنید.

قالب‌ها. رویکردی حداقلی به قالب‌ها دنبال کنید و منطق را در کد پایتون به جای برچسب‌های قالب نگه‌دارید. از ارث‌بری قالب به طور مؤثر استفاده کنید و از برچسب‌ها و فیلترهای قالب برای منطق ارائه استفاده کنید. از اتصال سبک‌ها به کد پایتون به شدت اجتناب کنید.

6. پیاده‌سازی اقدامات امنیتی قوی برای محافظت از برنامه جنگو

"هرگز داده‌های کارت اعتباری را ذخیره نکنید."

HTTPS در همه جا. از HTTPS برای کل سایت خود، از جمله منابع استاتیک استفاده کنید. سرور وب خود را برای هدایت ترافیک HTTP به HTTPS پیکربندی کنید و امنیت حمل و نقل سخت (HSTS) را پیاده‌سازی کنید.

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

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

7. بهینه‌سازی عملکرد و مدیریت چالش‌های مقیاس‌پذیری در پروژه‌های جنگو

"به یاد داشته باشید، بهینه‌سازی زودهنگام بد است."

بهینه‌سازی پایگاه داده. از شاخص‌های پایگاه داده به طور عاقلانه استفاده کنید، کوئری‌ها را بهینه کنید و از کش برای کاهش بار پایگاه داده بهره ببرید. در صورت لزوم از ویژگی‌های خاص پایگاه داده (مثلاً شاخص‌گذاری پیشرفته PostgreSQL) استفاده کنید.

کش. کش را در سطوح مختلف پیاده‌سازی کنید: کش قطعه قالب، کش نما و استفاده از API کش سطح پایین. از Memcached یا Redis به عنوان پشتیبان کش خود برای عملکرد بهتر استفاده کنید.

وظایف غیرهمزمان. وظایف زمان‌بر را به کارگران غیرهمزمان با استفاده از Celery یا صف‌های وظیفه مشابه منتقل کنید. این کار به حفظ پاسخگویی در برنامه شما کمک می‌کند، به ویژه برای فرآیندهای طولانی‌مدت.

8. بهره‌گیری عاقلانه از ویژگی‌های داخلی جنگو و بسته‌های شخص ثالث

"قدرت واقعی جنگو بیش از فقط چارچوب و مستندات موجود در http://djangoproject.com است. این انتخاب وسیع و در حال رشد بسته‌های جنگو و پایتون شخص ثالث ارائه شده توسط جامعه منبع باز است."

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

بسته‌های شخص ثالث. از اکوسیستم جامعه جنگو از بسته‌های شخص ثالث برای افزودن سریع عملکرد به پروژه خود استفاده کنید. بسته‌های محبوب شامل django-rest-framework برای ساخت APIها، django-allauth برای احراز هویت پیشرفته و django-debug-toolbar برای اشکال‌زدایی توسعه هستند.

راه‌حل‌های سفارشی. هنگام در نظر گرفتن استفاده از یک بسته شخص ثالث یا ساخت یک راه‌حل سفارشی، عواملی مانند قابلیت نگهداری، عملکرد و نیازهای خاص پروژه را ارزیابی کنید. گاهی اوقات، یک پیاده‌سازی سفارشی ساده ممکن است مناسب‌تر از یک راه‌حل پیچیده شخص ثالث باشد.

9. پیاده‌سازی شیوه‌های جامع تست و مستندسازی

"تست‌ها سنگ برنامه‌نویس هستند، ترس را به کسالت تبدیل می‌کنند." –کنت بک

استراتژی تست. یک استراتژی تست جامع که شامل تست‌های واحد، تست‌های یکپارچه‌سازی و تست‌های عملکردی است، پیاده‌سازی کنید. از چارچوب تست جنگو و ابزارهایی مانند coverage.py برای اندازه‌گیری و بهبود پوشش تست استفاده کنید.

یکپارچه‌سازی مداوم. یک سیستم یکپارچه‌سازی مداوم (CI) راه‌اندازی کنید تا مجموعه تست شما به طور خودکار در هر تعهد کد اجرا شود. این کار به شناسایی زودهنگام باگ‌ها کمک می‌کند و اطمینان می‌دهد که کدبیس شما با تکامل آن پایدار باقی می‌ماند.

مستندسازی. مستندات واضح و مختصر برای پروژه خود بنویسید، از جمله دستورالعمل‌های نصب، مراجع API و راهنماهای کاربر. از ابزارهایی مانند Sphinx برای تولید مستندات از docstringها استفاده کنید و آن را با تکامل پروژه به‌روز نگه‌دارید.

آخرین به‌روزرسانی::

نقد و بررسی

4.22 از 5
میانگین از 100+ امتیازات از Goodreads و Amazon.

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

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

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

0:00
-0:00
1x
Dan
Andrew
Michelle
Lauren
Select Speed
1.0×
+
200 words per minute
Create a free account to unlock:
Requests: Request new book summaries
Bookmarks: Save your favorite books
History: Revisit books later
Ratings: Rate books & see your ratings
Try Full Access for 7 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
All summaries are free to read in 40 languages
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 10
📜 Unlimited History
Free users are limited to 10
Risk-Free Timeline
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Mar 1,
cancel anytime before.
Consume 2.8x More Books
2.8x more books Listening Reading
Our users love us
50,000+ readers
"...I can 10x the number of books I can read..."
"...exceptionally accurate, engaging, and beautifully presented..."
"...better than any amazon review when I'm making a book-buying decision..."
Save 62%
Yearly
$119.88 $44.99/year
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Settings
Appearance
Black Friday Sale 🎉
$20 off Lifetime Access
$79.99 $59.99
Upgrade Now →