פייתון/פיתוח לסביבת אינטרנט/Django/מבוא לג'נגו

מבוא לג'נגו עריכה

  • סקירה כללית: ג'נגו
  • הַבָּא

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

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

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

מה זה ג'נגו? עריכה

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

Django עוזר לך לכתוב תוכנה שהיא:

לְהַשְׁלִים
ג'נגו עוקב אחר הפילוסופיה של "סוללות כלולות" ומספק כמעט כל מה שמפתחים עשויים לרצות לעשות "מחוץ לקופסה". מכיוון שכל מה שאתה צריך הוא חלק מ"מוצר" אחד, הכל עובד בצורה חלקה ביחד, עוקב אחר עקרונות עיצוב עקביים, ויש לו תיעוד נרחב ועדכני .
מגוון
ניתן (ושימש) ב-Django לבנות כמעט כל סוג של אתר אינטרנט - ממערכות ניהול תוכן וויקיס, דרך רשתות חברתיות ואתרי חדשות. זה יכול לעבוד עם כל מסגרת בצד הלקוח, ויכול לספק תוכן כמעט בכל פורמט (כולל HTML, הזנות RSS, JSON ו-XML). באופן פנימי, בעוד שהוא מספק אפשרויות עבור כמעט כל פונקציונליות שתרצה (למשל מספר מסדי נתונים פופולריים, מנועי תבניות וכו'), ניתן להרחיב אותו לשימוש ברכיבים אחרים במידת הצורך.
לבטח
Django עוזר למפתחים להימנע מטעויות אבטחה נפוצות רבות על ידי מתן מסגרת שתוכננה כדי "לעשות את הדברים הנכונים" כדי להגן על האתר באופן אוטומטי. לדוגמה, Django מספקת דרך מאובטחת לניהול חשבונות משתמש וסיסמאות, תוך הימנעות מטעויות נפוצות כמו הכנסת מידע הפעלה לקובצי Cookie במקום שהוא פגיע (במקום זאת קובצי Cookie מכילים מפתח, והנתונים בפועל מאוחסנים במסד הנתונים) או אחסון ישיר של סיסמאות במקום hash של סיסמה. גיבוב סיסמה הוא ערך באורך קבוע שנוצר על ידי שליחת הסיסמה דרך פונקציית גיבוב קריפטוגרפית . Django יכול לבדוק אם סיסמה שהוזנה נכונה על ידי הפעלתה דרך פונקציית ה-hash והשוואת הפלט לערך ה-hash המאוחסן. עם זאת, בשל האופי ה"חד-כיווני" של הפונקציה, גם אם ערך hash מאוחסן נפגע, קשה לתוקף למצוא את הסיסמה המקורית. Django מאפשרת הגנה מפני פגיעויות רבות כברירת מחדל, כולל הזרקת SQL, סקריפטים בין-אתרים, זיוף בקשות בין-אתרים ופריצת קליקים (ראה אבטחת אתר לפרטים נוספים על התקפות מסוג זה).
ניתן להרחבה
ג'נגו משתמש בארכיטקטורת " כלום משותף " מבוססת רכיבים (כל חלק בארכיטקטורה אינו תלוי באחרים, ולכן ניתן להחליף או לשנות אותו במידת הצורך). הפרדה ברורה בין החלקים השונים פירושה שהוא יכול להתאים לתעבורה מוגברת על ידי הוספת חומרה בכל רמה: שרתי מטמון, שרתי מסד נתונים או שרתי יישומים. כמה מהאתרים העמוסים ביותר הצליחו להרחיב את ג'נגו כדי לעמוד בדרישות שלהם (למשל אינסטגרם ודיסקוס, אם להזכיר רק שניים).
ניתן לתחזוקה
קוד Django נכתב באמצעות עקרונות עיצוב ודפוסים המעודדים יצירת קוד שניתן לתחזוקה ולשימוש חוזר. במיוחד, הוא עושה שימוש בעקרון Don't Repeat Yourself (DRY) כך שאין כפילות מיותרת, מה שמפחית את כמות הקוד. Django גם מקדם קיבוץ של פונקציונליות קשורה ל"יישומים" הניתנים לשימוש חוזר, וברמה נמוכה יותר, מקבץ קוד קשור למודולים (בדומה לתבנית ה- Model View Controller (MVC) ).
נייד
Django כתוב ב-Python, שפועל על פלטפורמות רבות. זה אומר שאתה לא קשור לאף פלטפורמת שרת מסוימת, ויכול להפעיל את היישומים שלך בטעמים רבים של לינוקס, Windows ו-macOS. יתר על כן, Django נתמך היטב על ידי ספקי אחסון אתרים רבים, אשר לרוב מספקים תשתית ותיעוד ספציפיים לאירוח אתרי Django.

מאיפה זה בא? עריכה

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

Django המשיכה לצמוח ולהשתפר, מההוצאה הראשונה של אבן הדרך (1.0) בספטמבר 2008 ועד לגרסה 4.0 (2022) שיצאה לאחרונה. כל מהדורה הוסיפה פונקציונליות חדשה ותיקוני באגים, החל מתמיכה בסוגים חדשים של מסדי נתונים, מנועי תבניות ואחסון במטמון, דרך הוספת פונקציות ומחלקות תצוגה "גנריות" (המפחיתות את כמות הקוד שמפתחים צריכים לכתוב עבורם מספר משימות תכנות).

הערה: עיין בהערות השחרור באתר Django כדי לראות מה השתנה בגרסאות האחרונות, וכמה עבודה מושקעת בהפיכת Django לטוב יותר.

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

כמה פופולרי הוא ג'נגו? עריכה

אין שום מדידה זמינה ומוחלטת לפופולריות של מסגרות בצד השרת (אם כי ניתן להעריך פופולריות באמצעות מנגנונים כמו ספירת מספר פרויקטי GitHub ושאלות StackOverflow עבור כל פלטפורמה). שאלה טובה יותר היא האם ג'נגו "פופולרי מספיק" כדי למנוע את הבעיות של פלטפורמות לא פופולריות. האם זה ממשיך להתפתח? האם אתה יכול לקבל עזרה אם אתה צריך את זה? האם יש הזדמנות עבורך לקבל עבודה בשכר אם תלמד ג'נגו?

בהתבסס על מספר האתרים בפרופיל גבוה המשתמשים ב-Django, מספר האנשים שתורמים לבסיס הקוד ומספר האנשים המספקים תמיכה בחינם וגם בתשלום, אז כן, Django היא מסגרת פופולרית!

אתרים בעלי פרופיל גבוה המשתמשים ב-Django כוללים: Disqus, Instagram, Knight Foundation, MacArthur Foundation, Mozilla, National Geographic, Open Knowledge Foundation, Pinterest ו-Open Stack (מקור: Django overview page ).

האם ג'נגו דעתן? עריכה

מסגרות אינטרנט לרוב מתייחסות לעצמן כ"מחושבות" או "חסרות דעה".

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

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

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

איך נראה קוד Django? עריכה

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

יישומי אינטרנט של Django מקבצים בדרך כלל את הקוד שמטפל בכל אחד מהשלבים האלה לקבצים נפרדים:

  • כתובות URL: אמנם ניתן לעבד בקשות מכל כתובת אתר בודדת באמצעות פונקציה בודדת, אך ניתן הרבה יותר לתחזוקה לכתוב פונקציית תצוגה נפרדת לטיפול בכל משאב. ממפה כתובת URL משמש להפניה מחדש של בקשות HTTP לתצוגה המתאימה בהתבסס על כתובת האתר של הבקשה. ממפה כתובות האתרים יכול גם להתאים דפוסים מסוימים של מחרוזות או ספרות המופיעות בכתובת URL ולהעביר אותן לפונקציית תצוגה כנתונים.
  • תצוגה: תצוגה היא פונקציית מטפל בבקשות, שמקבלת בקשות HTTP ומחזירה תגובות HTTP. תצוגות ניגשות לנתונים הדרושים כדי לספק בקשות באמצעות מודלים , ומאצילות את עיצוב התגובה לתבניות .
  • מודלים: מודלים הם אובייקטים של Python המגדירים את מבנה הנתונים של אפליקציה, ומספקים מנגנונים לניהול (הוספה, שינוי, מחיקה) ושאילתות של רשומות במסד הנתונים.
  • תבניות: תבנית היא קובץ טקסט המגדיר את המבנה או הפריסה של קובץ (כגון דף HTML), עם מצייני מיקום המשמשים לייצג תוכן בפועל. תצוגה יכולה ליצור באופן דינמי דף HTML באמצעות תבנית HTML, ולאכלס אותו בנתונים ממודל . ניתן להשתמש בתבנית כדי להגדיר את המבנה של כל סוג של קובץ; זה לא חייב להיות HTML!

הערה: Django מתייחס לארגון זה כאל ארכיטקטורת "תבנית תצוגת מודל (MVT)". יש לו קווי דמיון רבים לארכיטקטורת Model View Controller המוכרת יותר .

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

שליחת הבקשה לתצוגה הימנית (urls.py) עריכה

ממפה כתובת URL מאוחסן בדרך כלל בקובץ בשם urls.py. בדוגמה שלהלן, המפה ( urlpatterns) מגדיר רשימה של מיפויים בין מסלולים ( דפוסי כתובת URL ספציפיים ) ופונקציות תצוגה מתאימות. אם מתקבלת בקשת HTTP שיש לה כתובת URL התואמת לדפוס שצוין, פונקציית התצוגה המשויכת תיקרא ותעביר את הבקשה.

urlpatterns = [
    path('admin/', admin.site.urls),
    path('book/<int:id>/', views.book_detail, name='book_detail'),
    path('catalog/', include('catalog.urls')),
    re_path(r'^([0-9]+)/$', views.best),
]

האובייקט הוא urlpatternsרשימה של path()ו/או re_path()פונקציות (רשימות Python מוגדרות באמצעות סוגריים מרובעים, כאשר הפריטים מופרדים בפסיקים ועשויים לכלול פסיק אופציונלי . לדוגמה: [item1, item2, item3,]).

הטיעון הראשון לשתי השיטות הוא מסלול (דפוס) שיותאם. השיטה path()משתמשת בסוגריים זווית כדי להגדיר חלקים של כתובת URL שיילכדו ויעברו לפונקציית התצוגה כארגומנטים בעלי שם. הפונקציה re_path()משתמשת בגישת התאמת דפוסים גמישה המכונה ביטוי רגולרי. נדבר על אלה במאמר מאוחר יותר!

הארגומנט השני הוא פונקציה נוספת שתיקרא כאשר התבנית תואמת. הסימון views.book_detailמציין שהפונקציה נקראת book_detail()וניתן למצוא אותה במודול שנקרא views(כלומר בתוך קובץ בשם views.py)

טיפול בבקשה (views.py) עריכה

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

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

# filename: views.py (Django view functions)

from django.http import HttpResponse

def index(request):
    # Get an HttpRequest - the request parameter
    # perform operations using information from the request.
    # Return HttpResponse
    return HttpResponse('Hello from Django!')

הערה: קצת פייתון:

  • מודולי Python הם "ספריות" של פונקציות, המאוחסנות בקבצים נפרדים, שאולי נרצה להשתמש בקוד שלנו. כאן אנו מייבאים רק את HttpResponseהאובייקט django.httpמהמודול כדי שנוכל להשתמש בו בתצוגה שלנו: from django.http import HttpResponse. ישנן דרכים אחרות לייבא חלק מהאובייקטים או את כולם ממודול.
  • פונקציות מוצהרות באמצעות defמילת המפתח כפי שמוצג לעיל, כאשר פרמטרים בעלי שם מופיעים בסוגריים לאחר שם הפונקציה; כל הקו מסתיים במעי הגס. שים לב כיצד השורות הבאות כולן מוזזות . ההזחה חשובה, מכיוון שהיא מציינת ששורות הקוד נמצאות בתוך הבלוק המסוים הזה (הזחה חובה היא תכונה מרכזית של Python, והיא אחת הסיבות לכך שקוד Python כל כך קל לקריאה).

תצוגות מאוחסנות בדרך כלל בקובץ שנקרא views.py .

הגדרת מודלים של נתונים (models.py) עריכה

יישומי אינטרנט של Django מנהלים ושואלים נתונים באמצעות אובייקטים של Python המכונים מודלים. מודלים מגדירים את מבנה הנתונים המאוחסנים, כולל סוגי השדות ואולי גם הגודל המרבי שלהם, ערכי ברירת מחדל, אפשרויות רשימת בחירה, טקסט עזרה לתיעוד, טקסט תווית לטפסים וכו'. הגדרת המודל אינה תלויה במסד הנתונים הבסיסי - אתה יכול לבחור אחד מתוך כמה כחלק מהגדרות הפרויקט שלך. לאחר שבחרתם באיזה מסד נתונים תרצו להשתמש, אינכם צריכים לדבר אליו ישירות - אתם פשוט כותבים את מבנה המודל שלכם וקוד אחר, וג'נגו מטפל בכל ה"עבודה המלוכלכת" של תקשורת עם מסד הנתונים עבור אתה.

קטע הקוד שלהלן מציג מודל Django פשוט מאוד עבור Teamאובייקט. השיעור Teamנגזר משיעור ה-Django models.Model. הוא מגדיר את שם הצוות ורמת הצוות כשדות תווים ומציין את המספר המרבי של תווים שיש לאחסן עבור כל רשומה. זה team_levelיכול להיות אחד מכמה ערכים, אז אנחנו מגדירים אותו כשדות בחירה ומספקים מיפוי בין אפשרויות שיוצגו לנתונים שיש לאחסן, יחד עם ערך ברירת מחדל.

# filename: models.py

from django.db import models

class Team(models.Model):
    team_name = models.CharField(max_length=40)

    TEAM_LEVELS = (
        ('U09', 'Under 09s'),
        ('U10', 'Under 10s'),
        ('U11', 'Under 11s'),
        # …
        # list other team levels
    )
    team_level = models.CharField(max_length=3, choices=TEAM_LEVELS, default='U11')

הערה: קצת פייתון:

Python תומך ב"תכנות מונחה עצמים", סגנון תכנות שבו אנו מארגנים את הקוד שלנו לאובייקטים, הכוללים נתונים ופונקציות קשורות להפעלה על הנתונים הללו. אובייקטים יכולים גם לרשת/להרחיב/לנבוע מאובייקטים אחרים, מה שמאפשר לשתף התנהגות משותפת בין אובייקטים קשורים. ב-Python אנו משתמשים במילת המפתח classכדי להגדיר את ה"שרטוט" לאובייקט. אנו יכולים ליצור מספר מופעים ספציפיים של סוג האובייקט בהתבסס על המודל בכיתה.

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

שאילתת נתונים (views.py) עריכה

מודל Django מספק ממשק API של שאילתות פשוט לחיפוש במסד הנתונים המשויך. זה יכול להתאים למספר שדות בו-זמנית תוך שימוש בקריטריונים שונים (למשל מדויק, לא תלוי רישיות, גדול מ- וכו'), ויכול לתמוך בהצהרות מורכבות (לדוגמה, אתה יכול לציין חיפוש בקבוצות U11 שיש להן קבוצה שם שמתחיל ב-"Fr" או מסתיים ב-"al").

קטע הקוד מציג פונקציית תצוגה (מטפל במשאבים) להצגת כל צוותי U09 שלנו. השורה list_teams = Team.objects.filter(team_level__exact="U09")מראה כיצד אנו יכולים להשתמש ב-API של שאילתת המודל כדי לסנן את כל הרשומות שבהן team_levelהשדה מכיל בדיוק את הטקסט ' U09' (שים לב כיצד קריטריון זה מועבר filter()לפונקציה כארגומנט, עם שם השדה וסוג ההתאמה מופרדים על ידי כפול קו תחתון: team_level__exact).

## filename: views.py

from django.shortcuts import render
from .models import Team

def index(request):
    list_teams = Team.objects.filter(team_level__exact="U09")
    context = {'youngest_teams': list_teams}
    return render(request, '/best/index.html', context)

פונקציה זו משתמשת render()בפונקציה כדי ליצור את HttpResponseהנשלח חזרה לדפדפן. פונקציה זו היא קיצור דרך ; הוא יוצר קובץ HTML על ידי שילוב של תבנית HTML שצוינה ונתונים מסוימים להוספה בתבנית (מסופק במשתנה בשם " context"). בסעיף הבא אנו מראים כיצד התבנית כוללת את הנתונים ליצירת ה-HTML.

עיבוד נתונים (תבניות HTML) עריכה

מערכות תבניות מאפשרות לך לציין את המבנה של מסמך פלט, באמצעות מצייני מיקום לנתונים שימולאו בעת יצירת עמוד. תבניות משמשות לעתים קרובות ליצירת HTML, אך יכולות ליצור גם סוגים אחרים של מסמכים. Django תומך הן במערכת התבניות המקורית שלה והן בספריית Python פופולרית נוספת בשם Jinja2 מחוץ לקופסה (ניתן לגרום לה גם לתמוך במערכות אחרות במידת הצורך).

קטע הקוד מראה כיצד render()עשויה להיראות תבנית ה-HTML שנקראת על ידי הפונקציה בסעיף הקודם. תבנית זו נכתבה תחת ההנחה שתהיה לה גישה למשתנה רשימה הנקראת youngest_teamsכאשר היא מוצגת (זה כלול contextבמשתנה בתוך render()הפונקציה למעלה). בתוך שלד ה-HTML יש לנו ביטוי שבודק תחילה אם youngest_teamsהמשתנה קיים, ואז חוזר עליו forבלולאה. בכל איטרציה התבנית מציגה את team_nameהערך של כל צוות <li>באלמנט.

## filename: best/templates/best/index.html

<!DOCTYPE html>
<html lang="en">
 <head>
   <meta charset="utf-8">
  <title>Home page</title>
</head>
<body>
   {% if youngest_teams %}
     <ul>
       {% for team in youngest_teams %}
         <li>{{ team.team_name }}</li>
      {% endfor %}
    </ul>
  {% else %}
    <p>No teams are available.</p>
  {% endif %}
</body>
</html>

מה עוד אתה יכול לעשות? עריכה

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

  • טפסים : טפסי HTML משמשים לאיסוף נתוני משתמש לעיבוד בשרת. Django מפשט יצירת טפסים, אימות ועיבוד.
  • אימות משתמש והרשאות : Django כוללת מערכת אימות והרשאות משתמש חזקה שנבנתה מתוך מחשבה על אבטחה.
  • שמירה במטמון : יצירת תוכן באופן דינמי היא הרבה יותר אינטנסיבית (ואיטי) מבחינה חישובית מאשר הצגת תוכן סטטי. Django מספק מטמון גמיש כך שתוכל לאחסן את כל הדף המעובד או חלק ממנו, כך שהוא לא יעובד מחדש אלא בעת הצורך.
  • אתר ניהול : אתר הניהול של Django נכלל כברירת מחדל כאשר אתה יוצר אפליקציה באמצעות השלד הבסיסי. זה מקל בצורה טריוויאלית לספק דף ניהול למנהלי אתרים ליצור, לערוך ולהציג כל מודל נתונים באתר שלך.
  • העברת נתונים בסידרה : Django מקל על הסדרת הנתונים שלך והגשתם כ-XML או JSON. זה יכול להיות שימושי בעת יצירת שירות אינטרנט (אתר המשרת אך ורק נתונים לצריכה על ידי יישומים או אתרים אחרים, ואינו מציג דבר בעצמו), או בעת יצירת אתר שבו הקוד בצד הלקוח מטפל בכל העיבוד של מידע.

סיכום עריכה

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

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


מבוא לג'נגו
הקמת סביבת פיתוח של Django
מדריך ג'נגו: אתר הספרייה המקומית
מדריך ג'נגו חלק 2: יצירת אתר שלד
מדריך ג'נגו חלק 3: שימוש במודלים
מדריך ג'נגו חלק 4: אתר ניהול של ג'נגו
כעת, לאחר שיצרנו מודלים לאתר LocalLibrary , נשתמש באתר Django Admin כדי להוסיף כמה נתוני ספרים "אמיתיים". ראשית, נראה לך כיצד לרשום את הדגמים באתר הניהול, ולאחר מכן נראה לך כיצד להתחבר וליצור כמה נתונים. בסוף, אנו מראים כמה דרכים בהן תוכל לשפר עוד יותר את הצגת אתר הניהול.
מדריך ג'נגו חלק 5: יצירת דף הבית שלנו
כעת אנו מוכנים להוסיף את הקוד כדי להציג את העמוד המלא הראשון שלנו - דף בית עבור LocalLibrary שמראה כמה רשומות יש לנו מכל סוג דגם, ומספק קישורי ניווט בסרגל הצד לדפים האחרים שלנו. לאורך הדרך נרכוש ניסיון מעשי בכתיבת מפות ותצוגות כתובות בסיסיות, קבלת רשומות ממסד הנתונים ושימוש בתבניות.
מדריך ג'נגו חלק 6: רשימה כללית ותצוגות פירוט
מדריך זה מרחיב את אתר האינטרנט LocalLibrary שלנו , ומוסיף רשימה ודפי פירוט עבור ספרים ומחברים. כאן נלמד על תצוגות גנריות המבוססות על מחלקות, ונראה כיצד הן יכולות להפחית את כמות הקוד שאתה צריך לכתוב למקרי שימוש נפוצים. אנו גם ניכנס לטיפול בכתובות אתרים ביתר פירוט, ונראה כיצד לבצע התאמת דפוסים בסיסית.
מדריך ג'נגו חלק 7: מסגרת הפעלות
מדריך זה מרחיב את אתר האינטרנט LocalLibrary שלנו , ומוסיף מונה ביקורים מבוסס הפעלה לדף הבית. זוהי דוגמה פשוטה יחסית, אך היא מראה כיצד אתה יכול להשתמש במסגרת ההפעלה כדי לספק התנהגות מתמשכת למשתמשים אנונימיים באתרים שלך.
מדריך ג'נגו חלק 8: אימות משתמש והרשאות
במדריך זה נראה לך כיצד לאפשר למשתמשים להיכנס לאתר שלך עם חשבונות משלהם, וכיצד לשלוט במה שהם יכולים לעשות ולראות על סמך האם הם מחוברים או לא וההרשאות שלהם . כחלק מהדגמה זו, נרחיב את האתר LocalLibrary , נוסיף דפי התחברות והתנתקות ודפים ספציפיים למשתמש ולצוות לצפייה בספרים שהושאלו.
מדריך ג'נגו חלק 9: עבודה עם טפסים
במדריך זה נראה לך כיצד לעבוד עם HTML Forms ב-Django, ובמיוחד את הדרך הקלה ביותר לכתוב טפסים ליצירה, עדכון ומחיקה של מופעי מודל. כחלק מהדגמה זו, נרחיב את האתר LocalLibrary כך שספרנים יוכלו לחדש ספרים, וליצור, לעדכן ולמחוק מחברים באמצעות הטפסים שלנו (במקום להשתמש באפליקציית הניהול).
מדריך ג'נגו חלק 10: בדיקת אפליקציית אינטרנט של ג'נגו
ככל שאתרי אינטרנט גדלים, הם הופכים קשים יותר לבדיקה ידנית - לא רק שיש עוד מה לבדוק, אלא שככל שהאינטראקציות בין רכיבים הופכות מורכבות יותר, שינוי קטן בתחום אחד עשוי לדרוש בדיקות רבות נוספות כדי לאמת את השפעתו על תחומים אחרים. אחת הדרכים למתן את הבעיות הללו היא לכתוב בדיקות אוטומטיות, שניתן להפעיל בקלות ובאמינות בכל פעם שאתה מבצע שינוי. מדריך זה מראה כיצד להפוך את בדיקת יחידות האתר שלך לאוטומטיות באמצעות מסגרת הבדיקה של Django.
מדריך ג'נגו חלק 11: פריסת ג'נגו לייצור
כעת יצרת (ובדקת) אתר LocalLibrary מדהים , תרצה להתקין אותו על שרת אינטרנט ציבורי כך שניתן יהיה לגשת אליו על ידי צוות הספרייה וחברי הספרייה דרך האינטרנט. מאמר זה מספק סקירה כללית של האופן שבו תוכל למצוא מארח לפרוס את האתר שלך, ומה אתה צריך לעשות כדי להכין את האתר שלך לייצור.
אבטחת יישומי אינטרנט של Django
הגנה על נתוני משתמשים היא חלק חיוני בכל עיצוב אתר. הסברנו בעבר כמה מאיומי האבטחה הנפוצים יותר במאמר אבטחת אינטרנט - מאמר זה מספק הדגמה מעשית כיצד ההגנות המובנות של Django מטפלות באיומים כאלה.