django – תשתית פיתוח לפרפקציוניסטים (חלק א)

django היא תשתית פיתוח ליישומי אינטרנט הכתובה בשפת פייתון, ששוחררה לאוויר העולם ביולי 2005, ונבנתה במקור לניהול מספר אתרי חדשות של חברת The World Company מקנזס, ארצות הברית. זהר ארד פותח סדרה חדשה של פוסטים על תשתית הפיתוח.

djangoהדרך הטובה ביותר שמצאתי לאפיין את django לעומת אחותה (בעל כורחה), ריילס, היא כמו להשוות כוס וויסקי לכוס בירה. בעוד שריילס מתאפיינת בכובד ראש, רצינות ונפח גוף הנובע משנים של יישון בחביות עץ אלון, django מתאפיינת בקלילות, חביבות ואי-רשמיות של שבת בצהריים על החוף. אין בכך כמובן לרמוז שdjango נופלת מאחותה (או שוויסקי טוב יותר מבירה), אלא רק לרמוז על הבדלים במהותן של השתיים, כפי שייתחוור לנו בהמשך.

הדבר הראשון שהרשים אותי ב- django היה העדרה של ארכיטקטורה לשמה (לפי תפיסת העולם של ריילס לפחות). django, שחרטה על דגלה את עקרונות הפיתוח המהיר והעמידה בלוחות הזמנים הדוחקים של חדר החדשות, לא מנסה להכתיב למשתמשיה איך דברים אמורים להעשות (כמו כוסית הוויסקי הרצינית), אלא ממליצה, מעודדת ומשאירה הרבה החלטות בידי המפתח.

אחרי התאוששותי מהרגלי שתיית הוויסקי דנן (שלוו במלמול חרישי של רגע! איפה לעזאזל אני אמור לכתוב את הקוד שלי?) הבנתי שהדבר נובע בחלקו ממודל הפיתוח עליו מושתתת django. בניגוד לריילס ושותפיה המיישמות את עקרונות ה MVC, הפלטפורמה מיישמת וריאציה של עקרונות אלו הנקראת MTV:

Model – רכיב ניהול המידע (Business Logic). מקביל למודל בMVC
Template – רכיב הצגת המידע, המקביל ל View ב MVC, אך בניגוד אליו, אינו יכול להכיל קוד לוגי, אלא רק קוד המשמש לתצוגה.
View – רכיב עיבוד המידע והכנתו לתצוגה. מקביל ל Controller ב MVC

בעוד רכיבי התצוגה נמצאים תחת עץ ספריות אחד, צמדי ה Model וה View מאוגדים להם יחד לרכיב הנקרא יישום במילון של  django, וכתוצאה מכך הפרוייקט מתחיל כשהוא כמעט חף מקבצים ותיקיות, ומתמלא ביישומונים עם התקדמות הפיתוח.

ולמה כל זה חשוב? תשאלו? ובכן, כי שם מסתתרים להם מספר עקרונות שימושיים להפליא:

1.הפרדה מוחלטת של עיצוב מחישוב – תבניות התצוגה של django אינן מאפשרות הרצת קוד פייתון, ולכן מאלצות את המפתח להכין את כל המידע מראש בView או בקבצים ברי-הרצה המרחיבים את התבנית הרלבנטית. היתרון – סדר, משמעת, קלות תחזוקה ומהירות הרצה.
2. הטמעת עיקרון אי-החזרה (Do Not Repeat Yourself) – קוד לוגי הינו קוד שניתן לעטוף בפונקציה או מחלקה ולהשתמש בו חזור והשתמש. ראוי אם כן, שקוד זה יימצא בנפרד משכבת התצוגה שרק מחליטה איך דברים ייראו.
3.מודולריות – ישומי django (צמדי Model / View) הינם למעשה חבילה ארוזה בה ניתן להשתמש במספר פרוייקטים. אי לכך, אם כתבנו לדוגמה יישום לניהול פורום, נוכל להשתמש בו היכן שנחפוץ ללא מאמץ – רק צריך לציין את הנתיב ליישום בקובץ ההגדרות של הפרוייקט וגמרנו.
4.גמישות ע"פ מוסכמות – django אינה מניחה שלשני פרוייקטים יהיו צרכים דומים או מבנה דומה ולכן מעדיפה לתת למפתח להחליט אילו יישומים (פנימיים וחיצוניים) יכיל כל פרוייקט. בניגוד לעקרון המוסכמה על פי תצורה של ריילס, שיכול להיות מגביל או לעיתים מיותר, גישתה של django מובילה לפרוייקט רזה ותכליתי אך בעל מבנה גמיש המתאים לצרכים ספציפיים.

קינוחים מתוקים לסיכום

נסיים חלק זה (שחשף טפח קטן מדי של django הזריזה) בשני ממתקים טעימים שאורזת django באמתחתה.
הראשון הינו פייתון על כל יתרונותיה והצהרותיה. אם לא יצא לכם לכתוב בפייתון, הרשו לי להמליץ בחום – פייתון היא שפה קולחת, מהירה להפליא, נעימה ומובנת שמתיימרת לעבוד פשוט וטוב (כוס בירה בשבת בצהריים, זוכרים?). מכיוון שdjango כתובה בפייתון, חוויית העבודה עימה הופכת לפשוטה, תכליתית ומהירה. בלי מטען עודף, בלי הנחות יסוד וכוונות נסתרות.
השני קשור לסיפור הולדתה של django כתשתית לניהול אתרי חדשות והוא למעשה מערכת ניהול תוכן שלמה המובנית לתוך התשתית, אותה ניתן להפעיל על גבי הפרוייקט המבוקש באמצעות שורות קוד ספורות. הדבר שימושי מאוד מכיוון שהוא חוסך מאיתנו (בחלק מהמקרים) כתיבת מערכת ניהול תוכן ייעודית לאתר שבנינו. כבר יש, אז למה לא להשתמש?

בחלק הבא נבחן מעט יותר לעומק את קרביה של django ונדבר על עבודה עם מסדי נתונים, מנגנוני cache ושאר ברגים וגלגלי שיניים. בינתיים, אתם מוזמנים לבקר באתר הבית של django.

זהר ארד

בן 35, קיבוצניק שהדרים לעיר הגדולה, מפתח client-side בנשמתו (מטהקפה, קול הקמפוס 106fm ואחרים). משתמש מקינטוש מושבע (שחוטא גם בלינוקס בשעות הפנאי). מעדיף הכל פשוט, מינימליסטי ועובד טוב ומשתדל להמנע מדברים עם הלוגו של מיקרוסופט ונהגי מוניות כעסנים. אוהב הרבה Web, מתובלת בג'אווהסקריפט, HTML, CSS, פייתון ורובי, ספרים, פפאיות ומוזיקה מהחנות (בדיסק המקורי). מתנודד תדיר בין אקזיסטנציאליזם לאינדיבידואליזם ונכון להיום עדיין אוחז ב-fetish לא מוסבר לצבים.

הגב

7 Comments on "django – תשתית פיתוח לפרפקציוניסטים (חלק א)"

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 
Sort by:   newest | oldest | most voted
Moran Bar
Guest

test

ahik
Guest

סקירה נחמדה. קבלו סבבישן!
מי שרוצה לפייטן איתנו מוזמן לקבוצה הישראלית שמתמקדת בפיתוח בדג'נגו, פייתון ואפפליקציות ווב.
http://bit.ly/pyweb-il

שתי הערות:
1. ההשוואה לבירה אכן במקום. הכנסים של דג'נגו מלווים בהרבה בירה. באחד מהם, היה מי שהשווה את דג'נגו לבירה ואת ריילס ליין.
2. מנוע האפליקציות של גוגל* מבוסס על דג'נגו. זה אולי מסביר את התנופה שדג'נגו מקבלת לאחרונה.

נחכה לראות את ההמשך.

* Google – app engine: http://code.google.com/appengine/

trackback

[…] רלוונטיים נוספים: Django – תשתית פיתוח לפרפקציוניסטים – חלק א' ארכוב ודואר אלקטרוני – איך כמה ולמה? מתויג כ: Add new tag, […]

trackback

[…] as a Service – שירותי תוכנה בענן – חלק א' Django – תשתית פיתוח לפרפקציוניסטים – חלק א' ארכוב ודואר אלקטרוני – איך כמה […]

trackback

[…] Software as a Service – שירותי תוכנה בענן – חלק א' Software as a Service – שירותי תוכנה בענן – חלק ב' Django – תשתית פיתוח לפרפקציוניסטים – חלק א' […]

trackback

[…] בפוסט הראשון בסדרה, ערכנו הכרות קצרה עם תשתית הפיתוח Djagno, הכתובה בפייתון. בין כל ההשוואות השאולות מהבר המקומי, דיברנו מעט על רכיביה השונים של התשתית, תוך התרכזות בעקרונות ה MTV אותם מיישמת Djagno. בפוסט זה נמשיך לסקור את תמיכת Djagno במסדי נתונים, מנגנוני cache ולבחון את שפת תבניות התצוגה של Djagno. […]

trackback

[…] django – תשתית פיתוח לפרפקציוניסטים – חלק א' django – פיוטים בפייתון – חלק ב' מתויג כ: Add new tag, Apache, django, lighttpd, mysql, Nginx, Python, Rails, Ruby, אפאצ'י, דג'נגו, ריילס blog comments powered by Disqus var disqus_url = 'http://www.newsgeek.co.il/django-part-3/ '; var disqus_container_id = 'disqus_thread'; var facebookXdReceiverPath = 'http://www.newsgeek.co.il/wp-content/plugins/disqus-comment-system/xd_receiver.htm'; var DsqLocal = { 'trackbacks': [ ], 'trackback_url': 'http://www.newsgeek.co.il/django-part-3/trackback/' }; […]

wpDiscuz

תגיות לכתבה: