ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin

quick_linkשוחררה Django 1.1

published at 31/07/2009 - 02:56 · ‏פורסם mksoft · ‏tags פיתוח · שלח לחברידידותי למדפסת
פיתוח לגרסה 1.0 לקח זמן רב להגיע, אך כ-11 חודשים לאחריה שוחררה גרסה 1.1 של Django אשר מרחיבה את יכולות התשתית לפיתוח יישומי ווב. שינויים עיקריים בגרסה זו כוללים:

- הוספת תמיכה ב-aggregates ל-ORM כגון Min, Max ועוד. לפני כך היה צורך ליישם זאת ברמת ה-SQL - לא פורטבילי
- ביטויי שאילתות ב-ORM - מאפשרים להתייחס לעמודות בשאילתה עצמה ולעמודות בטבלאות הקשורות
- תמיכה במודלים אשר אינם מנוהלים ע"י Django ובמודלי Proxy המאפשרים להרחיב התנהגות ולשנות מודלים קיימים ללא צורך ביצירת טבלה נוספת (להבדיל מירושת מודלים)
- שדות "מעוכבים" (Deferred) המאפשרים להמנע מטעינת שדות חישובים מורכבים או גדולים מאוד בעת ביצוע שאילתות - ייטענו בעת הגישה למאפיין של המודל הממופה לשדה
- שיפורים ב-unit testing - כעת הבדיקות מתבצעות תחת טרנזקציות ומונעות צורך בהריסת ויצירת בסיס הנתונים מחדש עבור כל בדיקה, מאיץ הרצת כמות גדולה של בדיקות
- בממשק הניהול: יכולת עריכת שדות בעת דפדפוף ברשומות, אפשרות ביצוע פעולות על מספר רשומות בו זמנית (כולל הגדרת פעולות מותאמות אישית)
- name spaces עבור url ממופי שם (named urls), מאפשר למפות את אותם ה-urls פעמים רבות תחת קידומות שונות
- שיפורים ב-GeoDjango
- תמיכה ב-AutoCommit הטבעי של PostgreSQL (כאשר משתמשים ב-postgresql_psycopg2 כ-backend), עוזר בהאצת יישומים המבצעים פעולות קריאה רבות

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

כמו כן הוכרזו שני עדכוני אבטחה (לא כל כך לגבי השני) לגרסאות קודמות:

- אם אתם נוהגים להשתמש בשרת המובנה של Django לא רק בפיתוח, ניתן לגרום לו להגיש כל קובץ שיש לשרת גישת קריאה אליו (מסקנה: אל תעשו זאת, השתמשו בשרתי http שנועדו לכך)
- הוכח כי ה-Middleware שעדכן את משתנה ה-REMOTE_ADDR במקרים של Reverse proxy לא מדוייק תמיד מאחר ולא ניתן להסתמך באופן מוחלט על ה-Header של X-Forewarded-for הנקבע ע"י חלק משרתי הפרוקסי. הוחלט להסירו בעתיד (יישאר בגרסאות הנוכחית, כנראה יוסר סופית ב-1.2)

כדי לתקן זאת שוחררו גרסאות 0.96.4 ו-1.0.3. שימו לב כי שחרור 1.1 מבשר על סוף מחזור החיים של ענף 0.96 - זו הגרסה האחרונה שתשוחרר עבורו.
 

קישורים רלוונטיים

· עוד על פיתוח
· חדשות מאת mksoft


הסיפור הנקרא ביותר בנושא פיתוח:
הטבלה המחזורית של האופרטורים

שוחררה Django 1.1 | כניסה / יצירת מנוי חדש | 11 תגובות
סף חסימה
  
ההערות הינן מטעם כותביהן. אין צוות האתר לוקח אחריות על תוכנן
Re: שוחררה Django 1.1 (ניקוד: 1)
ע"י צחי_ ב 01/08/2009 - 10:42

(מידע על משתמש | שלח הודעה) http://www.mozilla.org.il
הדיווח הזה לא כל כך קריא למי שלא מכיר את Django - למשל, מה זה ORM? עדיף לדעתי להשתמש פחות במונחים פנימיים ולהחליפם במילים בעברית, לטובת כלל הקוראים.

[ השב לזאת ]


Re: שוחררה Django 1.1 (ניקוד: 0)
ע"י פינגווין אנונימי ב 01/08/2009 - 16:15
ORM אינו מונח של Django אלא מונח כללי.
זהו קיצור של Object Relational Mapping, כלומר ייצוג Object Oriented של מידע ב-Relational Database, כמו כל DB שאתה מכיר (MySQL, PostgreSQL, MS SQL, Oracle, SQLite וכו'). זוהי בעצם מערכת שמאפשרת גישה תכנותית נוחה מאוד למידע הנשמר ב-DB.





Re: שוחררה Django 1.1 (ניקוד: 1)
ע"י צחי_ ב 02/08/2009 - 00:36

(מידע על משתמש | שלח הודעה) http://www.mozilla.org.il
אז אני מתכנת כבר שנתיים ועוד לא נתקלתי בראשי התיבות האלה. ויש עוד דוגמאות בכתבה.





Re: שוחררה Django 1.1(ניקוד: 1)
ע"י mksoft (meir@mksoft.co.il)
ב 02/08/2009 - 10:34
(מידע על משתמש | שלח הודעה) http://mksoft.co.il/
מצטער, אך ORM זה מונח בסיסי מאוד בפיתוח, וקיים במגוון רחב של שפות תכנות. כך גם "מודל" (מ-MVC).

הנ"ל ואחרים המוזכרים כאן די בסיסיים בפיתוח אפליקציות ווב, אם הייתי מנסה לתרגם את זה לעברית זה היה מסורבל מאוד והופך את העסק לדי בלתי קריא.

לדעתי ידיעה כזו לא אמורה להוות קורס בסיסי ב-Django או בתחום פיתוח יישומי ווב - היא טכנית מעצם הנושא בו היא עוסקת וברורה לאנשים בתחום. כמו כן למתכנתים לא צריכה להיות בעיה לחפש מונח אשר לא ידוע להם.




Re: שוחררה Django 1.1 (ניקוד: 1)
ע"י SnirD ב 01/08/2009 - 18:24

(מידע על משתמש | שלח הודעה) http://
כתבה נהדרת. תודה.

[ השב לזאת ]

Re: שוחררה Django 1.1 (ניקוד: 1)
ע"י עידו ב 01/08/2009 - 20:02

(מידע על משתמש | שלח הודעה) http://http://
מאז שהתחלנו להשתמש ב sqlalchemy בעבודה (מודול עבודה מול דאטהבייס אשר דומה ל hivernate של java למי שמכיר), אני מסתכל על המודול של django מעמדה של "נחמד, אבל יכול להיות יותר טוב"

אני מקווה שהקישור של django ל ORM שלו יהפוך להיות פחות הדוק, ככה שיהיה אפשר להשתמש ב sqlalchemy בצורה חלקה ומלאה.
כלומר, כבר היום אפשר להשתמש ב sqlalchemy ביחד עם django, אבל ישנם דברים כמו מודול ה admin או מודולים של ext אשר לא יעבדו ביחד עם sqlalchemy.

[ השב לזאת ]


Re: שוחררה Django 1.1(ניקוד: 1)
ע"י mksoft (meir@mksoft.co.il)
ב 02/08/2009 - 10:58
(מידע על משתמש | שלח הודעה) http://mksoft.co.il/
שים לב שלא מדובר רק ברמת ה-admin אלא בדברים בסיסיים יותר אשר משתמשים בו (כגון טפסים עבור מודלים - שעליהם בעצם ה-admin מתבסס, auth, הרשאות, session וכד'). לדעתי לא יהיה קל לבצע decoupling ביניהם ללא סרבול של קוד התשתית (זה בעצם יהפוך את Django ל-TG, ויש אחד כזה כבר ;-).

לדעתי אין מקום להשוואה בין שניהם - מטרות שונות. SQLAlchemy משמו כן הוא מהווה שכבה מעל ה-SQL ומסורבל יותר לעבודה (metadata, mapper וכד') אך עם יתרונות אחרים.

עבורי לפחות ה-ORM של Django נועד להשכיח בכלל שאתה עובד מול מנוע רלציוני, ולהשאר "פייתוני" בתחביר והחשיבה ככל האפשר, לכן קל ונקי יותר לעבוד מולו מזה של SQLAlchemy.





Re: שוחררה Django 1.1 (ניקוד: 1)
ע"י עידו ב 03/08/2009 - 01:39

(מידע על משתמש | שלח הודעה) http://http://
לא מדוייק, היופי ב sqlalchemy הוא שהוא מאפשר לך לעבוד בצורה כמעט זהה לזאת של Django עם declerative, אבל מצד שני, מאפשר לך הרבה יותר כח - עד לרמה של עבודה עם טבלאות.

אני חושב שההבדל העיקרי הוא שהפילוסופיה של sqlalchemy היא שאם אתה מתעסק עם DB, אתה צריך להבין מה אתה עושה (אם כי, שוב, ב declerative יש קצת סטייה מזה, וכן אפשר ליצור sql שעובד בלי להבין מה קורה מאחורה) לעומת הגישה של ה ActiveMapper (Django, RoR) שאומרת, תתייחס ל DB כאל מקום הקסם אליו הולכים האובייקטים שלך. שזה נחמד באפליקציות ווביות פשוטות, אבל נשבר לחלוטין ברגע שאתה באמת צריך להתעסק עם ה DB.

חוץ מזה שסתם מעצבן אותי שאי אפשר להגדיר טבלאות עם composite primary key :)

בכל מקרה, יש פרוייקט שנקרא django-sqlalchemy שנועד לחבר בין השניים.

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





Re: שוחררה Django 1.1(ניקוד: 1)
ע"י mksoft (meir@mksoft.co.il)
ב 03/08/2009 - 02:16
(מידע על משתמש | שלח הודעה) http://mksoft.co.il/
אני לא מסכים, כשאני משווה קוד של sqlachemy מול django ההבדלים ממש בולטים לי לעין (אם ניקח לדוגמא limit/offset או צורת השאילתות). Django הרבה יותר פייתוני באופי בעוד SQLAlchemy דומה יותר ל-SQL (ומערבב שפה נוספת בשפת הפיתוח שלך), זה בולט מאוד באופן הגדרת המודלים לדוגמא.

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

באופן אישי, אחרי שנים של stored procedures ו-triggers אני רוצה להחזיר את ה-database למקום הפשוט והמטומטם שלו ולא לגעת ישירות ב-db יותר (זה מקור לכאב ראש לא קטן, במיוחד ב-deploy אצל מספר גדול של לקוחות) לכן אני מעדיף את ה-ORM של Django ואת ניהול מחזור החיים של בסיס הנתונים שלו - במיוחד אם הוא יתפתח לתמיכה גם בבסיסי נתונים נטולי סכימה, מה של-SQL alchemy יהי קשה עקב ה-coupling שלו עם שפת ה-SQL עצמה.

גם במקרים שהייתי צריך לרדת לרמת בסיס הנתונים בעבר ב-Django, זה לא היה סיפור גדול. עם הוספת התמיכה ב-aggregates, הצורך שלי לעשות ברמה מתחת ל-ORM ירד לאפס. SQL alchemy זה פרוייקט יפה, אבל למי שרוצה SQL - לא למי שרוצה מקום לאחסון המחלקות - ובמקרים כאלה, שהם המוחלטים לדעתי ביישומי ווב, צורת העבודה של Django נקייה וברורה יותר.





Re: שוחררה Django 1.1 (ניקוד: 1)
ע"י שולה ב 14/08/2009 - 20:40

(מידע על משתמש | שלח הודעה)
למה אתה מתכוון composite primary key?
אם זה אומר שהמפתח מבוסס על 2 שדות או יותר, אז נדמה לי שבדיוק עשיתי את זה לפני חודש.

זה לא היה טריויאלי כמו שהייתי מצפה,
כולל כמה בעיות שזה יצר בממשק האדמין, אבל זה היה אפשרי





Re: שוחררה Django 1.1 (ניקוד: 0)
ע"י פינגווין אנונימי ב 28/08/2009 - 06:47
האם תוכל/י לתעד איך עשית זאת?
זה יעזור להרבה אנשים!