1 00:00:00,000 --> 00:00:00,499 2 00:00:00,499 --> 00:00:03,227 [השמעת מוסיקה] 3 00:00:03,227 --> 00:00:04,705 4 00:00:04,705 --> 00:00:05,830 עזרא זיגמונד: היי, כולם. 5 00:00:05,830 --> 00:00:08,020 תודה על שיוצא היום. 6 00:00:08,020 --> 00:00:10,660 סמינר זה הוא "פייתון Web Apps עם בקבוק. " 7 00:00:10,660 --> 00:00:14,510 >> אז, אני הולך לדבר קצת על למה 8 00:00:14,510 --> 00:00:17,400 אולי כדאי לך להשתמש בבקבוק כדי לעשות יישומי אינטרנט עם פייתון, בניגוד 9 00:00:17,400 --> 00:00:21,556 לכמה מסגרות אחרות שם בחוץ, כמו יחידת, שהוא ידוע ביותר. 10 00:00:21,556 --> 00:00:24,330 הכתוביות היא "ו פיווי, "וזה משהו ש 11 00:00:24,330 --> 00:00:27,250 אנחנו הולכים לדבר על איך כדי לקיים אינטראקציה עם מסדי נתונים של SQL. 12 00:00:27,250 --> 00:00:29,610 זה עושה את זה ממש נחמד. 13 00:00:29,610 --> 00:00:32,390 >> אז, הנה רק סקירה מהירה ממה שאני רוצה ללכת על. 14 00:00:32,390 --> 00:00:35,520 אז, ראשון, רק שקופית אחת זה הולך להיות התחלה מהירה, 15 00:00:35,520 --> 00:00:38,530 אשר הוא איך להשיג כל מה ש להגדיר במחשב שלך. 16 00:00:38,530 --> 00:00:41,760 אני הולך להיות הפגנה זה במחשב Mac המקומי שלי, 17 00:00:41,760 --> 00:00:45,220 רק בגלל שזה המקום שבו עשיתי את זה לפני, אני הכי נוח עם זה, 18 00:00:45,220 --> 00:00:48,510 אבל זה בהחלט אפשרי על IDE CD50. 19 00:00:48,510 --> 00:00:52,050 >> אז, לאחר ש, אני רוצה להציג את מה שהיא צפחת, 20 00:00:52,050 --> 00:00:55,089 ולשכנע אותך למה שאתה צריך להשתמש בו במקום הראשון. 21 00:00:55,089 --> 00:00:56,880 ואז, אני אתן לי מהיר דוגמא למה שאתה 22 00:00:56,880 --> 00:01:00,550 יכול לעשות בצפחה, דוגמא מהירה של מה שאתה יכול לעשות בפיווי, 23 00:01:00,550 --> 00:01:05,010 ואז אני אראה לך יותר יישום דוגמא מלא 24 00:01:05,010 --> 00:01:07,520 כי אני להרכיב ש יכול ללכת דרך יחד. 25 00:01:07,520 --> 00:01:10,040 >> ולבסוף, ב השקופית האחרונה, יש לי 26 00:01:10,040 --> 00:01:12,730 כמה משאבים שאתה מסתכל באינטרנט לקבלת מידע נוסף. 27 00:01:12,730 --> 00:01:15,560 זה לא מלא הדרכה כיצד להשתמש בבקבוק. 28 00:01:15,560 --> 00:01:18,140 ואני מקווה לעזוב כמה זמן לשאלות. 29 00:01:18,140 --> 00:01:21,050 כל מי שצפה באופן מקומי, רק כמו, לצעוק באמצע 30 00:01:21,050 --> 00:01:22,340 אם יש לך שאלות. 31 00:01:22,340 --> 00:01:27,150 >> אז דברים התקנה מהירים, אם אתה רוצה לבצע יחד, 32 00:01:27,150 --> 00:01:29,240 או אם אתה רוצה לקבל את זה על המכונה שלך, 33 00:01:29,240 --> 00:01:32,440 אני הולך להיות באמצעות פייתון 2.7.10. 34 00:01:32,440 --> 00:01:35,860 הבקבוק עושה עבודה עם פייטון 3, אבל אני אוהב 35 00:01:35,860 --> 00:01:38,660 באמצעות פייתון 2, כי יש כמה חבילות פייתון ש 36 00:01:38,660 --> 00:01:40,910 לא עובד עם 3 עדיין. 37 00:01:40,910 --> 00:01:44,800 אם התקנת PIP, ש הוא מנהל חבילות Python, 38 00:01:44,800 --> 00:01:48,190 אני חושב שאם פייתון שלך הוא גדול או שווה ל2.7.9, 39 00:01:48,190 --> 00:01:52,220 יש לך את זה מותקן כבר, זה סופר קל להתקנת חבילות אלה. 40 00:01:52,220 --> 00:01:54,990 >> אתה יכול לעשות פיפס להתקין בקבוק, פיפס להתקין פיווי, 41 00:01:54,990 --> 00:01:58,600 בדרך כלל אתה צריך לרוץ sudo פשוט כך שההרשאות יסתדרו. 42 00:01:58,600 --> 00:02:01,080 ו, אם אתה משתמש ב סופר גרסה ישנה של פייתון, 43 00:02:01,080 --> 00:02:05,100 אני ממליץ לעדכן פייתון, או באמצעות EasyInstall להתקין PIP. 44 00:02:05,100 --> 00:02:09,180 45 00:02:09,180 --> 00:02:11,120 לכן, השאלה הבאה היא, מה היא צפחת? 46 00:02:11,120 --> 00:02:13,280 ואני מניח, ראשון שאלה סבירה תהיתי 47 00:02:13,280 --> 00:02:15,585 במשך זמן רב הוא, מה הוא יישום אינטרנט? 48 00:02:15,585 --> 00:02:17,960 כי זה מילה שאני חושב שהוא נזרק סביב הרבה 49 00:02:17,960 --> 00:02:19,240 שאני לא באמת יודע. 50 00:02:19,240 --> 00:02:22,340 ואני חושב שטוב ביותר דוגמא למה הוא יישום אינטרנט, 51 00:02:22,340 --> 00:02:26,960 באמת CS50 האוצר, שבו זה לא באמת רק אתר אינטרנט, 52 00:02:26,960 --> 00:02:29,320 אבל זה משהו שאתה סוג של יכול לקיים אינטראקציה עם. 53 00:02:29,320 --> 00:02:31,736 יש חשבונות המשתמשים ו כל מיני דברים שונים. 54 00:02:31,736 --> 00:02:35,010 אז, איפה בדיוק אתה מצייר קו בין מה שהוא אתר אינטרנט, 55 00:02:35,010 --> 00:02:38,780 ומה הוא יישום אינטרנט, הוא סוג של שרירותי, אבל אני מניח שהרעיון, 56 00:02:38,780 --> 00:02:42,110 זה משהו יותר מאתר אינטרנט וזה יישום שימושי. 57 00:02:42,110 --> 00:02:46,081 >> אז, צפחת היא מסגרת ל מה שהופך את יישומי אינטרנט באמצעות פייתון. 58 00:02:46,081 --> 00:02:48,330 ואני מקווה, עד הסוף זה, אני אשכנע אותך 59 00:02:48,330 --> 00:02:52,210 כי בעצם אתה יכול לכתוב משהו כמו CS50 האוצר באמצעות פייתון, שבו אני 60 00:02:52,210 --> 00:02:53,950 כמו הרבה יותר טוב מאשר PHP, באופן אישי. 61 00:02:53,950 --> 00:02:57,320 >> אז, בקבוק הוא, שהם מכנים microframework, שבו, 62 00:02:57,320 --> 00:02:59,800 הם אומר שזה מאוד פשוט, אבל להרחבה. 63 00:02:59,800 --> 00:03:02,980 אז, יש לו רק מה שאתה צריך, אבל אם אתה רוצה יותר תכונות, 64 00:03:02,980 --> 00:03:04,522 זה קל להביא אותם ב. 65 00:03:04,522 --> 00:03:06,480 אבל רק בגלל שזה microframework, לא 66 00:03:06,480 --> 00:03:08,960 אומר שזה רק לפרויקטים קטנים. 67 00:03:08,960 --> 00:03:12,590 יש לי קישור כאן שאומר שאובמה השתמשה Flask בשנת 2012 68 00:03:12,590 --> 00:03:14,410 לקמפיין שלו אתר, שאני מקווה, 69 00:03:14,410 --> 00:03:16,937 הוא משהו של הסבה. 70 00:03:16,937 --> 00:03:18,770 אבל הדבר שאני באמת אוהבים Flask 71 00:03:18,770 --> 00:03:22,401 הוא ש, זה לא ממש לעשות כל סוג של החלטות בשבילך. 72 00:03:22,401 --> 00:03:24,150 רק בגלל שאנחנו מדבר על יישומי אינטרנט, 73 00:03:24,150 --> 00:03:26,940 אני צריך להשוות אותו לRuby on מסילות ויחידה, אשר שניהם 74 00:03:26,940 --> 00:03:30,450 הן מסגרות גדולות, אבל שניהם עושים הנחות 75 00:03:30,450 --> 00:03:33,600 על איך שאתה רוצה אינטראקציה עם מסדי נתונים, 76 00:03:33,600 --> 00:03:36,900 איך אתה רוצה להציג שלך נופים, והם בהחלט 77 00:03:36,900 --> 00:03:38,850 היבטים טובים ש. 78 00:03:38,850 --> 00:03:41,490 >> לדוגמא, Ruby on Rails יש מערכת שיא פעילה זה, 79 00:03:41,490 --> 00:03:43,100 שהוא ממש נחמד דרך לאינטראקציה עם נתונים, 80 00:03:43,100 --> 00:03:45,960 אבל אם אתה רוצה להשתמש ברובה על Rails, אתה קשור לסוג של ש. 81 00:03:45,960 --> 00:03:47,835 אבל עם צפחת, כאני יהיה להראות לך עם פיווי, 82 00:03:47,835 --> 00:03:49,830 אתה יכול להשתמש בכל סוג של מסד הנתונים שברצונך, 83 00:03:49,830 --> 00:03:53,980 ואתה יכול פשוט למשוך את זה ב כהרחבה לבקבוק. 84 00:03:53,980 --> 00:03:56,350 >> אז בגלל זה אני באמת כמו צפחת, זה ש 85 00:03:56,350 --> 00:04:01,170 לא עושה הנחות לך המבוסס על דברים שאתה לא צריך באמת. 86 00:04:01,170 --> 00:04:04,440 >> אז, למה אתה צריך להשתמש צפחת? 87 00:04:04,440 --> 00:04:08,230 היתרונות הם, זה פשוט יש באמת את תכונות הליבה 88 00:04:08,230 --> 00:04:09,420 נבנה לתוך זה שאתה צריך. 89 00:04:09,420 --> 00:04:11,980 אז, אתה לא צריך לדאוג הבנת חבורה שלמה של דברים 90 00:04:11,980 --> 00:04:13,175 כי אתה לא צריך באמת. 91 00:04:13,175 --> 00:04:15,060 אתה לא צריך צריך לדאוג על כיבוי תכונות 92 00:04:15,060 --> 00:04:16,620 כי אתה לא צריך באמת. 93 00:04:16,620 --> 00:04:21,082 >> ו, כפי שציינתי, זה סופר קל להוסיף בסיומות של דברים 94 00:04:21,082 --> 00:04:21,790 שאתה צריך. 95 00:04:21,790 --> 00:04:24,700 חלקם, יש צפחת התמיכה שלהם לזה. 96 00:04:24,700 --> 00:04:28,230 אז יש משהו שנקרא Flask מנהל, שמשקף מנהל ש 97 00:04:28,230 --> 00:04:32,060 פנל שהיחידה מספקת, אשר נותנת לך דרך חזותית נחמדה 98 00:04:32,060 --> 00:04:33,405 לניהול אתר האינטרנט שלך. 99 00:04:33,405 --> 00:04:35,280 אבל שוב, אם אתה מה שהופך משהו פשוט, 100 00:04:35,280 --> 00:04:39,550 אתה כנראה לא צריך מנהל גדול פנל, אז אני חושב שזה סופר נחמד. 101 00:04:39,550 --> 00:04:45,940 והחסרונות הם, ש יש לך פחות כוח מהקופסה. 102 00:04:45,940 --> 00:04:49,660 לכן, כאשר אתה ראשון לפתוח את צפחת, ובתכנית פייתון, 103 00:04:49,660 --> 00:04:53,150 אתה פשוט להקליד מן הבקבוק * יבוא, או מה, 104 00:04:53,150 --> 00:04:55,957 אתה לא בדיוק לקבל את כל התכונות שאולי ירצו. 105 00:04:55,957 --> 00:04:58,540 ואז אתה צריך באופן מפורש יותר רשימת התכונות שאתה רוצה. 106 00:04:58,540 --> 00:05:01,990 אז זה חסרון אחד, אבל אני חושב שלבניית אתרים קטנים 107 00:05:01,990 --> 00:05:04,782 אפליקציות כמו שאני הולכים להיות הצגה שלך, זה לא ממש בעיה. 108 00:05:04,782 --> 00:05:07,281 ומה הוא הדבר האחרון אמור להגיד, שהוא טעות דפוס, 109 00:05:07,281 --> 00:05:10,240 הם שיש פחות סטנדרטיים אמנות לכיצד להשתמש Flask, 110 00:05:10,240 --> 00:05:12,400 רק בגלל שיש לא רב אנשים המשתמשים בה באופן מקצועי 111 00:05:12,400 --> 00:05:13,191 בהשוואה לאופטימיות. 112 00:05:13,191 --> 00:05:16,380 אז, אם אתה מסתכל משהו כמו, "איך אני עושה את x" ביחידה, 113 00:05:16,380 --> 00:05:18,190 אתה כנראה תמצא אותו. 114 00:05:18,190 --> 00:05:20,260 >> יש עיצוב טוב דפוסים אתה יכול להשתמש, 115 00:05:20,260 --> 00:05:22,660 אבל עם צפחת, זה סוג של ללכת בדרך משלך, 116 00:05:22,660 --> 00:05:24,850 רק בגלל שזה ספרייה די קטנה. 117 00:05:24,850 --> 00:05:27,100 אז הם אלה חסרונות, אבל אני חושב ש 118 00:05:27,100 --> 00:05:29,370 שזה עדיין ספרייה טובה לשימוש. 119 00:05:29,370 --> 00:05:31,909 >> אז בואו פשוט לקפוץ ישר לתוך הבקבוק. 120 00:05:31,909 --> 00:05:34,200 זה בהחלט לא הולך להיות הדרכה מלאה, 121 00:05:34,200 --> 00:05:37,480 אבל זה ייתן לך רעיון איך לבנות דברים, 122 00:05:37,480 --> 00:05:40,790 ואז אתה מרגיש בנוח הולך את ומסתכל על התיעוד 123 00:05:40,790 --> 00:05:42,570 ולגלות יותר. 124 00:05:42,570 --> 00:05:48,500 >> אז, תן לי לפתוח את באמת דוגמא פשוטה בהתחלה, 125 00:05:48,500 --> 00:05:50,737 ולהראות לך מה ש נראה, ואז 126 00:05:50,737 --> 00:05:52,070 לשבור אותו קצת יותר. 127 00:05:52,070 --> 00:05:56,160 >> אז זה כאן, תן לי להביא אותו פועל. 128 00:05:56,160 --> 00:06:06,800 129 00:06:06,800 --> 00:06:09,750 אז, עכשיו יש לי ריצת הבקשה שלי. 130 00:06:09,750 --> 00:06:15,910 אני הולך לפתוח את Safari, ו זה פועל על המארח המקומי שלי. 131 00:06:15,910 --> 00:06:19,360 אז רק אני הולך לעשות את זה גדול יותר. 132 00:06:19,360 --> 00:06:23,960 אבל localhost: 5000 133 00:06:23,960 --> 00:06:27,650 >> וכך, ברגע זה ממש, כל זה עושה הוא, כאשר אתה מבקר באתר האינטרנט, 134 00:06:27,650 --> 00:06:31,490 היא מדפיסה את "שלום Flask," שהוא לא סופר שימושי, 135 00:06:31,490 --> 00:06:34,630 אבל אני חושב שזה מגניב ש בקובץ הקטן הזה כאן, 136 00:06:34,630 --> 00:06:37,390 יש לנו ריצת שרת האינטרנט שמדפיס משהו. 137 00:06:37,390 --> 00:06:40,500 אז, בואו באמת נראים בקוד לשנייה, 138 00:06:40,500 --> 00:06:43,080 ולשבור אותו קצת. 139 00:06:43,080 --> 00:06:45,260 האם הגודל טוב לכולם כאן? 140 00:06:45,260 --> 00:06:51,560 >> אז, אני מקווה, שאתה קצת נוח להשתמש פייתון. 141 00:06:51,560 --> 00:06:55,820 אני מניח שאנחנו יכולים להסתכל ב פייתון ולקרוא אותו. 142 00:06:55,820 --> 00:06:59,290 אם יש לך שאלות על שום דבר, אני יכול גם ללכת על זה. 143 00:06:59,290 --> 00:07:03,974 >> אז השורה הראשונה היא, מן הבקבוק, אנו מייבאים, בקבוק עם הון "F" 144 00:07:03,974 --> 00:07:06,140 אשר הוא סוג של כל תכונות עיקריות שאתה צריך. 145 00:07:06,140 --> 00:07:08,890 בכל פעם שאתה כותב קובץ וצפחה באמצעות, 146 00:07:08,890 --> 00:07:12,120 אתה הולך רוצה לייבא את זה, רק בגלל שיש לו את כל הדברים העיקריים. 147 00:07:12,120 --> 00:07:15,400 הדבר הבא שאנחנו עושים, הוא ש קורא Flask פונקציה זו, רק 148 00:07:15,400 --> 00:07:19,270 כדי ליצור אובייקט אפליקציה, ואתה תמיד הולך רוצה לעשות את זה. 149 00:07:19,270 --> 00:07:25,960 >> ולאחר מכן, קפיצה ל תחתון במהירות, חלק זה הוא כאן, 150 00:07:25,960 --> 00:07:28,760 "If_name _ ==" _ main_ "'שהוא סוג של אמנת פייתון. 151 00:07:28,760 --> 00:07:32,750 אז זה יהיה רק ​​לבצע אם אתה לרוץ בקובץ זה ישירות באמצעות פייתון. 152 00:07:32,750 --> 00:07:36,040 לאחר מכן, אנו קוראים app.run, אשר יהיה בעצם להתחיל את היישום הולך. 153 00:07:36,040 --> 00:07:39,570 >> אז, זה המבנה העיקרי ש תצטרך בכל יישום Flask, 154 00:07:39,570 --> 00:07:48,550 הוא תצטרך את זה אפליקציה = צפחת (_NAME_), ולאחר מכן app.run. 155 00:07:48,550 --> 00:07:54,940 >> אז, שני הדברים שיש לי כאן, הם מה שאנו מכנים מסלולים. 156 00:07:54,940 --> 00:07:57,150 אז, בואו נדבר על ניתוב קצת יותר. 157 00:07:57,150 --> 00:07:58,430 אני אחזור לשקופית. 158 00:07:58,430 --> 00:08:02,540 >> אז הבסיסי ביותר מושג בבקבוק הוא ניתוב. 159 00:08:02,540 --> 00:08:06,750 וזה הרעיון שאתה להקצות פונקציות בפייתון 160 00:08:06,750 --> 00:08:11,280 לכתובות מסוימות בדף האינטרנט שלך. 161 00:08:11,280 --> 00:08:13,930 אז, בכל פעם שאתה רוצה כדי ליצור מסלול חדש, 162 00:08:13,930 --> 00:08:16,500 אתה משתמש app.route @ זה מעצב פונקציה. 163 00:08:16,500 --> 00:08:19,770 לכן, אם אתה לא מכיר מעצבי פונקציה בפייתון, 164 00:08:19,770 --> 00:08:24,160 זה המושג הזה ש מאפשר לך לקחת פונקציה 165 00:08:24,160 --> 00:08:26,800 ולהקיף אותו במשהו אחר. 166 00:08:26,800 --> 00:08:30,140 >> אז באמת, מה זה עושה מעצב, הוא שזה לוקח את הפונקציה מתחתיו, 167 00:08:30,140 --> 00:08:33,409 והיא מוסיפה מידע נוסף לזה, אבל מה בעצם Flask 168 00:08:33,409 --> 00:08:37,480 אין לגרום לזה לקרות הוא לא סופר חיוני, אבל מה שחשוב, 169 00:08:37,480 --> 00:08:43,640 הוא שלפני המסלול, אתה לשים app.route @ זה, ולאחר מכן 170 00:08:43,640 --> 00:08:46,480 הכתובת של המסלול, כך הקו הנטוי הוא מה שאנחנו 171 00:08:46,480 --> 00:08:48,360 ראה כאשר אנו פשוט לפתוח את דף האינטרנט. 172 00:08:48,360 --> 00:08:49,580 אז זה דף הבית. 173 00:08:49,580 --> 00:08:51,037 זה פשוט מסלול הקו הנטוי. 174 00:08:51,037 --> 00:08:52,370 ואז יש לך בפונקציה זו. 175 00:08:52,370 --> 00:08:54,453 שמו של הפונקציה יכול להיות מה שאתה רוצה. 176 00:08:54,453 --> 00:08:56,930 זה לא חייב בהכרח צריך לעשות עם המסלול. 177 00:08:56,930 --> 00:08:59,440 ואז, כל מה ש שובו של הפונקציה, 178 00:08:59,440 --> 00:09:01,730 הפונקציה צריכה להחזיר מחרוזת. 179 00:09:01,730 --> 00:09:03,740 ויכולה מחרוזת ש להכיל HTML או כל דבר, 180 00:09:03,740 --> 00:09:06,920 וזה בעצם מה שיקבל חזרתי לדפדפן האינטרנט שלך כמו HTML, 181 00:09:06,920 --> 00:09:08,200 וזה יהפוך את זה. 182 00:09:08,200 --> 00:09:12,030 >> אז זה אותו הקוד שהיה מהדוגמא 183 00:09:12,030 --> 00:09:16,430 כי אני פשוט רצתי, ולכן כאשר אנו מבקרים קו נטוי, הוא קורא פונקצית שלום עולם, ש 184 00:09:16,430 --> 00:09:20,470 רק מחזירה מחרוזת, שלום Flask, ושמקבל מודפס על המסך. 185 00:09:20,470 --> 00:09:27,290 >> אז יש דוגמא נוספת, שהוא, בעת ביקור / שלום, 186 00:09:27,290 --> 00:09:30,370 היא מדפיסה את שלום Word, ש בעצם צריך לומר, שלום העולם, 187 00:09:30,370 --> 00:09:32,010 אבל בואו נעמיד פנים שהיה מכוון. 188 00:09:32,010 --> 00:09:35,140 אז בואו למשוך את זה עד ממש מהר. 189 00:09:35,140 --> 00:09:41,290 >> אז אם אתה הולך לlocalhost / שלום, זה עכשיו יהיה להדפיס משהו אחר. 190 00:09:41,290 --> 00:09:45,680 אז זה רק דוגמה קטנה על איך אתה יכול ליצור שני מסלולים שונים. 191 00:09:45,680 --> 00:09:50,630 >> כך, כל כך הרבה זה לא סופר שימושי, אין הרבה שאתה יכול לעשות, 192 00:09:50,630 --> 00:09:55,360 אתה פשוט יכול לעשות את כל זה עם יש דפי HTML שונים, 193 00:09:55,360 --> 00:09:58,000 וכאשר אתה מבקר מסוים דף זה פשוט טוען את הדף. 194 00:09:58,000 --> 00:10:00,864 אז בואו לראות כמה יותר דברים שימושיים שאתה יכול לעשות. 195 00:10:00,864 --> 00:10:03,780 אז, דבר אחד שאולי יש לך שם לב שבדוגמא שמשכתי 196 00:10:03,780 --> 00:10:07,160 עד, הוא שיש לי app.run (debug = True). 197 00:10:07,160 --> 00:10:09,580 וכך, מה זה טיעון באגים עושה, הוא 198 00:10:09,580 --> 00:10:14,600 כי כאשר אתה להפעיל את שרת האינטרנט שלך, כשאתה ביישום שלך, 199 00:10:14,600 --> 00:10:18,100 אם תשנה את קובץ, זה יהיה באופן אוטומטי לטעון מחדש את השרת. 200 00:10:18,100 --> 00:10:21,160 >> ואז אתה לא באמת צריך ההפעלה מחדש פייתון, שהוא סופר שימושי. 201 00:10:21,160 --> 00:10:24,020 אני יכול להראות את זה. 202 00:10:24,020 --> 00:10:26,960 תנו לי להרים את הקוד שלי עם טעות דפוס בזה, 203 00:10:26,960 --> 00:10:30,420 ולהעמיד פנים שטעות הדפוס שלשים שם בכוונה למטרות מאלפות. 204 00:10:30,420 --> 00:10:31,625 אז בואו נוסיף את זה בחזרה ב. 205 00:10:31,625 --> 00:10:33,140 אז עכשיו זה אומר שלום העולם. 206 00:10:33,140 --> 00:10:34,410 אני יחסוך את זה. 207 00:10:34,410 --> 00:10:36,540 ואם אנחנו מושכים בחזרה המסוף, אתה תמצאו 208 00:10:36,540 --> 00:10:39,520 אומר שזה הפעלה מחדש, כי זה זוהה שינוי, 209 00:10:39,520 --> 00:10:43,620 ואז עכשיו כשאנחנו טען מחדש דף זה, זה יהיה להדפיס את הדבר הנכון. 210 00:10:43,620 --> 00:10:45,630 >> אז באגים הוא סופר שימושי של. 211 00:10:45,630 --> 00:10:48,740 כמו כן, אם יש לך סוג של התרסקות, כך 212 00:10:48,740 --> 00:10:54,370 תן לי לעשות התרסקות יישום זה על ידי בעלה לא יחזור מחרוזת. 213 00:10:54,370 --> 00:10:57,540 אז, בואו פשוט יש לו לחזור אף אחד מסיבה כלשהי. 214 00:10:57,540 --> 00:11:00,810 ואז כשאני מבקר את זה דף, זה יהיה פשוט לקרוס, 215 00:11:00,810 --> 00:11:04,465 אבל השרת לא רק לקרוס, זה נותן לך בעצם חזרה סופר שימושי 216 00:11:04,465 --> 00:11:06,490 עקבות של כל מה שהשתבשו. 217 00:11:06,490 --> 00:11:10,050 ומה שבאמת נחמד, ש בשלב כלשהו בחצר אחורית זה, 218 00:11:10,050 --> 00:11:14,260 אתה יכול לפתוח אינטראקטיבי להפגיז כאן, וסוג של להדפיס את מה ש 219 00:11:14,260 --> 00:11:17,780 משתנים שאתה רוצה להעיף מבט על. 220 00:11:17,780 --> 00:11:21,054 >> וכך הוא באמת ניפוי שימושי לחישוב 221 00:11:21,054 --> 00:11:23,470 מה קורה עם שלך שרת, ולא רק לראות 222 00:11:23,470 --> 00:11:28,201 משהו ב- PHP כמו 500 פנימי שגיאת שרת, שהוא סופר חסר תועלת. 223 00:11:28,201 --> 00:11:30,700 דבר אחד כדי להיות מודע, הוא שאם אתה שם את האפליקציה שלך באינטרנט 224 00:11:30,700 --> 00:11:34,260 אז זה גלוי לציבור, אף פעם לא רוצה לצאת ממצב ניפוי שגיאות ב, 225 00:11:34,260 --> 00:11:37,320 כי למעשה אנשים יכולים להשתמש קונסולה ש 226 00:11:37,320 --> 00:11:39,150 הראה לך לבצע קוד שרירותי. 227 00:11:39,150 --> 00:11:42,120 >> אז הם יכולים להדפיס את כמו כל קודים סודיים שיש לך שם, 228 00:11:42,120 --> 00:11:44,755 הם יכולים להסתכל בדיוק איך האתר שלך עובד. 229 00:11:44,755 --> 00:11:46,630 אז זה באמת שימושי לבדיקה, אבל תמיד 230 00:11:46,630 --> 00:11:50,090 הקפד לקחת את זה לפני אתה מפרסם משהו באינטרנט. 231 00:11:50,090 --> 00:11:56,640 >> לכן, כאשר אתה משתמש במשהו כמו PHP, יש את הרעיון הזה 232 00:11:56,640 --> 00:11:58,920 שאתה יכול לעבור מידע בין דפי האינטרנט 233 00:11:58,920 --> 00:12:03,620 על ידי הצבת המידע בפועל ב- URL, אשר בקשת GET, 234 00:12:03,620 --> 00:12:07,490 אבל בצפחה, אתה בעצם יכול לעשות משהו כמו סוג של ש, 235 00:12:07,490 --> 00:12:10,590 על ידי בעל מסלול שיש משתנה כחלק ממנו. 236 00:12:10,590 --> 00:12:14,090 >> אז אם אתה מסתכל על זה דוגמא על המסך כאן, 237 00:12:14,090 --> 00:12:19,930 יש לנו מסלול זה ('/ שלום / "), וכן, אם אתה מבקר 238 00:12:19,930 --> 00:12:23,790 / שלום / משהו, שמשהו הוא הולך לקבל למעשה עם מילוי 239 00:12:23,790 --> 00:12:25,490 לשם משתנה. 240 00:12:25,490 --> 00:12:27,850 ושים לב שהפונקציה שמגיע עם מסלול ש 241 00:12:27,850 --> 00:12:31,302 יש לקחת בפרמטר שם, כך שהוא יהיה למעשה 242 00:12:31,302 --> 00:12:32,510 מועברים לפונקציה. 243 00:12:32,510 --> 00:12:34,190 >> ואז, ברגע שאתה בתוך הפונקציה ש, 244 00:12:34,190 --> 00:12:36,420 אתה יכול לטפל בזה כמו משתנה פייתון נורמלי, 245 00:12:36,420 --> 00:12:39,650 וכך אז, זה יהיה להדפיס את שלום, וזה 246 00:12:39,650 --> 00:12:42,000 ימלא את השם באמצעות עיצוב מסוים מחרוזת. 247 00:12:42,000 --> 00:12:48,060 >> אז כדי להוסיף חלקים משתנים לניתוב, אתה משתמש בתושבת זווית סימון. 248 00:12:48,060 --> 00:12:51,220 ולחלופין, אתה יכול להשתמש מה שנקרא ממיר. 249 00:12:51,220 --> 00:12:56,840 וכך, אם אתה שם את זה ביאור עם המעי הגס, 250 00:12:56,840 --> 00:13:00,015 אתה יכול לציין שזה int, או לצוף, או נתיב, 251 00:13:00,015 --> 00:13:01,640 וזה יהיה באופן אוטומטי להמיר את זה. 252 00:13:01,640 --> 00:13:05,130 גם אתה יכול לעשות את ההמרה בתוך פונקצית Python, 253 00:13:05,130 --> 00:13:09,710 רק באמצעות גבס, אבל לפעמים אם אתה רוצה להבטיח שזה int, 254 00:13:09,710 --> 00:13:12,080 אתה יכול לשים את זה שלטון המרה שם. 255 00:13:12,080 --> 00:13:15,930 >> אז בואו להרים את דוגמא של כמה כללים משתנים. 256 00:13:15,930 --> 00:13:21,480 אז הנה, זה יש את אותו בסיסי מבנה עם מיבוא Flask 257 00:13:21,480 --> 00:13:25,030 בקבוק, האפליקציה = צפחת (_NAME_), ואז זה פועל בסוף. 258 00:13:25,030 --> 00:13:28,050 יש לנו שני אלה שונים מסלולים משתנים כאן. 259 00:13:28,050 --> 00:13:29,900 והראשון, הוא אחד שהראיתי לי 260 00:13:29,900 --> 00:13:34,230 בשקופית, שהייתה ש זה פשוט לוקח בשם מחרוזת 261 00:13:34,230 --> 00:13:35,650 וזה יהיה להדפיס את שלום, שם. 262 00:13:35,650 --> 00:13:41,410 >> ואז, השני אחד משתמש בהמרה. 263 00:13:41,410 --> 00:13:44,690 אז זה יהיה באופן אוטומטי להמיר אותו לint, ולאחר מכן להכפיל את int, 264 00:13:44,690 --> 00:13:46,150 ולהדפיס את זה. 265 00:13:46,150 --> 00:13:48,220 ו, אנחנו לא עושים כל סוג המרה בתוכו 266 00:13:48,220 --> 00:13:49,594 כי Flask דואג ש. 267 00:13:49,594 --> 00:13:53,181 אז בואו לקבל זה ריצה. 268 00:13:53,181 --> 00:13:54,930 כאשר יש לך בקבוק ריצת יישום, 269 00:13:54,930 --> 00:13:58,440 אתה יכול לשלוט ב- C מחוץ לזה כדי לעצור את ריצת השרת. 270 00:13:58,440 --> 00:14:02,420 ואז אני ארוץ משתנים. 271 00:14:02,420 --> 00:14:11,740 >> אז בואו נלך לlocalhost / שלום / עזרא ו אני מקווה, זה אומר לי שלום. 272 00:14:11,740 --> 00:14:14,530 273 00:14:14,530 --> 00:14:20,310 >> אז זה לקח בשם שלי, במשתנה מסלול, וזה מילא אותו בכאן. 274 00:14:20,310 --> 00:14:23,950 אז גם אני אראה מהיר דוגמא להכפלה. 275 00:14:23,950 --> 00:14:28,600 אז אם אתה הולך ל/ כפול / 3, הוא יודפס 6 החוצה. 276 00:14:28,600 --> 00:14:31,440 אז זה טיפל ב ההמרה עבורנו. 277 00:14:31,440 --> 00:14:34,190 >> אז אתה גם יכול לעשות את זה עם לצוף, ומשהו מיוחד, 278 00:14:34,190 --> 00:14:37,530 אם אתה צריך לציין משהו כמו נתיב, המאפשר לו לקבל את החתכים, 279 00:14:37,530 --> 00:14:39,155 אבל זה לא צריך בדרך כלל להיות בעיה. 280 00:14:39,155 --> 00:14:41,480 281 00:14:41,480 --> 00:14:43,820 עד כה, עדיין יש לי עתה חוזר 282 00:14:43,820 --> 00:14:46,320 מחרוזות, שהוא לא מאוד מעניין. 283 00:14:46,320 --> 00:14:48,730 >> אנחנו באמת יכולים לחזור מחרוזת HTML מילולית. 284 00:14:48,730 --> 00:14:54,322 אז בקוד אנחנו יכולים להכניס משהו כמו ב-התג כדי להפוך אותו נועז, 285 00:14:54,322 --> 00:14:56,030 אבל רוב הזמן אתה לא באמת רוצה 286 00:14:56,030 --> 00:14:58,420 להיות כתיבת קוד HTML בקוד פייתון. 287 00:14:58,420 --> 00:15:01,940 זה נהיה ממש מבולגן, וזה לא זמן טוב. 288 00:15:01,940 --> 00:15:06,430 >> בקבוק מאפשר לנו להפריד את HTML לתוך מה שנקרא התבנית, 289 00:15:06,430 --> 00:15:09,467 ולכן אם אתה חושב במונחים של מודל MVC 290 00:15:09,467 --> 00:15:11,550 שאתה מכיר, אני מקווה, מעבודה 291 00:15:11,550 --> 00:15:15,520 עם CS50 האוצר קצת, אתה יכול לחשוב על קבצי פייתון 292 00:15:15,520 --> 00:15:19,430 כיותר של בקר, שבו הם נמצאים באינטראקציה עם כל מה ש 293 00:15:19,430 --> 00:15:20,970 מודל נתונים אולי יש לך. 294 00:15:20,970 --> 00:15:24,900 >> ואז הם קוראים לי צפיות והעברת מידע לצפייה שב 295 00:15:24,900 --> 00:15:28,120 כדי למלא את המידע ב- HTML שהיא צריכה. 296 00:15:28,120 --> 00:15:30,490 ומה שאנו מכנים צפיות אלה הם תבניות בכיתה. 297 00:15:30,490 --> 00:15:35,280 >> אז Flask משתמש פייתון אחר מודול שזה באופן אוטומטי 298 00:15:35,280 --> 00:15:38,620 להתקין בעת ​​התקנת PIP בקבוק שנקרא ג'ינג'ה, ש 299 00:15:38,620 --> 00:15:40,885 מאפשר לך להוסיף אלה ביאורים לHTML 300 00:15:40,885 --> 00:15:45,140 שאתה רואה על המסך, המאפשר לי אתה מכניס דברים כמו תנאי, 301 00:15:45,140 --> 00:15:47,230 ולולאות לHTML. 302 00:15:47,230 --> 00:15:51,140 >> כך זה נראה קצת כמו איך אתה עשוי להשתמש PHP בתוך קובץ HTML, 303 00:15:51,140 --> 00:15:57,380 אבל זה רק כאשר הבקבוק שרת משמש את קובץ HTML, 304 00:15:57,380 --> 00:16:01,610 זה יפעל מנוע בניית תבנית זו ו לנתח דרך זה ולמלא דברים ב. 305 00:16:01,610 --> 00:16:06,650 אז יש צפחת פונקצית render_template שאתה יכול לראות בתחתית כאן. 306 00:16:06,650 --> 00:16:14,300 וכך, כאשר אתה מבקר בדף זה, זה יהפוך תבנית hello.html זה, 307 00:16:14,300 --> 00:16:16,407 ולאחר מכן למלא בדף ה- HTML. 308 00:16:16,407 --> 00:16:18,990 אז בואו פשוט לרוץ אמיתי זה מהיר, ותראה איך זה נראה, 309 00:16:18,990 --> 00:16:21,198 ואז אני אלך דרך קצת בפירוט רב יותר. 310 00:16:21,198 --> 00:16:25,380 311 00:16:25,380 --> 00:16:30,260 אז, התבניות שלך הולכים ללכת בתיקיית תבניות. 312 00:16:30,260 --> 00:16:33,980 באופן אוטומטי זה ייראה ב תיקיית תבניות לתבנית ש. 313 00:16:33,980 --> 00:16:35,615 אז בואו לפתוח את זה. 314 00:16:35,615 --> 00:16:47,350 315 00:16:47,350 --> 00:16:50,005 אז, אני ארוץ דוגמא בניית התבנית. 316 00:16:50,005 --> 00:16:52,820 317 00:16:52,820 --> 00:17:03,660 >> אז אם אני הולך ל/ שלום / עזרא, יש לו את זה נורא, 318 00:17:03,660 --> 00:17:05,930 תג אוהל מגונה שאני שם ב. 319 00:17:05,930 --> 00:17:08,050 מאוד נחמד, מאוד דינמי. 320 00:17:08,050 --> 00:17:09,349 אני מעריץ גדול. 321 00:17:09,349 --> 00:17:13,900 אבל מה קורה אם רק אני הולך ל, / שלום? 322 00:17:13,900 --> 00:17:15,220 אז זה רק אומר שלום העולם. 323 00:17:15,220 --> 00:17:17,678 אני לא עברתי את זה שם, ו זה מילא אותו באופן אוטומטי. 324 00:17:17,678 --> 00:17:22,050 אז בואו לראות איך זה עשה את זה, ואיך אנחנו יכולים להיפטר מאוהל שאולי. 325 00:17:22,050 --> 00:17:26,240 >> אז הנה, זה סוג של דוגמא מעניינת ל, 326 00:17:26,240 --> 00:17:29,101 אם אתה מכיר איך מתג ההצהרות לעבוד בשפה. 327 00:17:29,101 --> 00:17:31,350 אומר שזה כמו סוג של, סוג זה של נפילה דרך, 328 00:17:31,350 --> 00:17:34,266 שבו אתה בעצם דו מסלולים שונים לאותה הפונקציה. 329 00:17:34,266 --> 00:17:41,190 אז אנו מייחסים / שלום המסלול ו / שלום / שם בדרך לשלום, 330 00:17:41,190 --> 00:17:45,130 ואנחנו לציין using-- פייתון מאפשר לך לציין arguments-- פונקצית ברירת מחדל 331 00:17:45,130 --> 00:17:48,300 כך שאם אין שם, כל כך אם אנחנו הולכים לסתם / שלום, 332 00:17:48,300 --> 00:17:50,680 זה באופן אוטומטי יסנן לשם שווה לאף אחד. 333 00:17:50,680 --> 00:17:55,010 >> אז, אנחנו הופכים את תבנית עם שם = שם, 334 00:17:55,010 --> 00:17:59,510 כך זה יעבור בשם הפרמטר שווה לפרמטר שם פונקציה זו, 335 00:17:59,510 --> 00:18:00,730 לתבנית. 336 00:18:00,730 --> 00:18:04,040 שעדיין לא מסביר איך הוא החלטה אם להדפיס שלום העולם, 337 00:18:04,040 --> 00:18:05,100 או להדפיס את השם שלי. 338 00:18:05,100 --> 00:18:08,050 אז בואו באמת נראים לתבנית עצמה, 339 00:18:08,050 --> 00:18:11,610 ותראה בו, כי הוא מגיע. 340 00:18:11,610 --> 00:18:18,680 >> אז, בתוך תבנית זו, אנחנו למעשה יש כמה היגיון מותנה, 341 00:18:18,680 --> 00:18:20,580 שיש אנשים שהיה טוען, שאתה באמת 342 00:18:20,580 --> 00:18:23,730 לא צריך הרבה מותנה היגיון בתוך התבנית שלך עצמו. 343 00:18:23,730 --> 00:18:26,310 זה צריך להיות יותר ב בקר, אבל לדוגמא זו 344 00:18:26,310 --> 00:18:27,476 זה משהו די קטן. 345 00:18:27,476 --> 00:18:31,060 אז הנה, אנחנו בודקים, אם שם, כל כך אם השם אינו שווה לאף אחד, 346 00:18:31,060 --> 00:18:33,130 אם שם הוא למעשה עבר ב, אז אנחנו 347 00:18:33,130 --> 00:18:36,210 אומר שלום, שמים עם כותרת והאוהל, 348 00:18:36,210 --> 00:18:41,490 כל HTML רגיל זה, אחרת, להדפיס את שלום, העולם פשוט כלל. 349 00:18:41,490 --> 00:18:45,820 אז כמה דברים ללב כאן על איך שאתה לאתחל את בניית התבנית, 350 00:18:45,820 --> 00:18:49,110 הוא ש, כל אלה הצהרות מותנות, 351 00:18:49,110 --> 00:18:54,475 כמו סוג של איך אנחנו PHP זה כש אתה רוצה להכניס קצת PHP, 352 00:18:54,475 --> 00:18:58,380 אתה משתמש בפחות מ שאלה סימן, זה סוג של אנלוגי כאן 353 00:18:58,380 --> 00:19:00,140 איתי {%. 354 00:19:00,140 --> 00:19:02,130 >> אז הנה, יש לנו הקוד המותנה שלנו. 355 00:19:02,130 --> 00:19:05,920 ואז, כשאתה באמת רוצה פשוטו כמשמעו להעריך משהו, והדפסה 356 00:19:05,920 --> 00:19:08,710 את זה על המסך, אתה להשתמש בסוגריים המסולסלים כפולים. 357 00:19:08,710 --> 00:19:12,310 אז הנה הפלטה הכפולה, ואז אנחנו לציין שם, 358 00:19:12,310 --> 00:19:15,500 כך בתוך זה, זה יהיה להעריך לשם משתנה, ש 359 00:19:15,500 --> 00:19:18,860 עבר מ לדקלם פונקצית תבנית, 360 00:19:18,860 --> 00:19:21,484 ולא רק הדפסה את, אם נפטרתי מאלה, 361 00:19:21,484 --> 00:19:23,150 זה יהיה להדפיס רק את המילה "שם". 362 00:19:23,150 --> 00:19:26,340 אז, זה משהו שצריך להיזהר. 363 00:19:26,340 --> 00:19:29,792 >> אז עוד דבר ל הודעה היא, שכאשר אנחנו 364 00:19:29,792 --> 00:19:31,500 רוצה להשתמש ב פונקצית render_template, 365 00:19:31,500 --> 00:19:34,490 אנחנו באמת צריכים לייבא זה באופן מפורש מבקבוק. 366 00:19:34,490 --> 00:19:36,915 וזה הוא דוגמה ל המודולריות של צפחת, 367 00:19:36,915 --> 00:19:39,290 כי אתה לא צריך לייבא דברים שאתה לא צריך. 368 00:19:39,290 --> 00:19:41,290 אתה פשוט יכול להביא ב פונקציות שאתה באמת 369 00:19:41,290 --> 00:19:43,450 צריך, שהוא לפעמים נחמד, כדי שלא 370 00:19:43,450 --> 00:19:46,560 צריך שיהיה לי כל הפונקציות האלה יושב סביבך שאתה לא משתמש, 371 00:19:46,560 --> 00:19:49,730 אבל גם, אם אתה שוכח שאתה צריך לייבא render_template, 372 00:19:49,730 --> 00:19:52,660 אתה בטח מקבל אזהרה שיודיע לך על זה. 373 00:19:52,660 --> 00:19:56,700 אז, כי הוא בניית תבנית. 374 00:19:56,700 --> 00:20:01,680 >> אז, יש לנו לראות כיצד להפוך את דפי אינטרנט פשוטים, 375 00:20:01,680 --> 00:20:04,947 ולהוסיף קצת יותר היגיון ל זה, במונחים של הניתוב משתנה. 376 00:20:04,947 --> 00:20:08,280 הוא מאפשר לך לעשות דברים שונים על בסיס מה כתובת אתר שאתה הולך ל, וגם לאחר מכן, לתת 377 00:20:08,280 --> 00:20:11,950 HTML קצת יותר הגיוני ב מבחינת איך שאתה רוצה להבהיר דברים. 378 00:20:11,950 --> 00:20:14,210 אתה לא צריך לשים את כל ה- HTML שלך בפייתון, 379 00:20:14,210 --> 00:20:16,640 אבל לדי הרבה כל יישום אינטרנט, 380 00:20:16,640 --> 00:20:21,480 אתה הולך רוצה כלשהו של מודל נתונים הקשורים אליו. 381 00:20:21,480 --> 00:20:25,560 >> וכך באופן מסורתי, היית זה משהו כמו מסד נתונים SQL. 382 00:20:25,560 --> 00:20:30,280 ואתה יכול רק אינטראקציה ישירות עם SQL. 383 00:20:30,280 --> 00:20:32,190 יש פייתון, אני חושב שזה נקרא. 384 00:20:32,190 --> 00:20:33,040 SQLite 3. 385 00:20:33,040 --> 00:20:38,454 אתה יכול פשוט לייבא SQLite 3 ו ביצוע שאילתות SQL ישירות, 386 00:20:38,454 --> 00:20:40,870 אבל אני לא יודע מה איתכם, אבל אני ממש לא אוהב, רק, 387 00:20:40,870 --> 00:20:42,750 כתיבה מתוך שאילתות SQL. 388 00:20:42,750 --> 00:20:45,350 הוא נוטה לקבל באמת ארוך ומסובך. 389 00:20:45,350 --> 00:20:49,180 >> וכך, משהו ש אני רוצה להשתמש הוא מה 390 00:20:49,180 --> 00:20:53,610 ידוע כORM, שהוא יחסי אובייקט מיפוי. 391 00:20:53,610 --> 00:20:56,890 ונקודת מיפוי יחסי אובייקט, 392 00:20:56,890 --> 00:21:00,100 הוא שיש שני שונים דרכים אתה יכול לחשוב על מסדי נתונים. 393 00:21:00,100 --> 00:21:03,240 >> אז הדוגמא ש פרופ מלאן בדרך כלל 394 00:21:03,240 --> 00:21:07,660 משתמש בכיתה, הוא שולחן Excel, שבו יש לך שורות אלה ועמודות אלה, 395 00:21:07,660 --> 00:21:10,210 וזה באמת שימושי ל איך זה מיוצג בSQL 396 00:21:10,210 --> 00:21:13,170 ואיך אתה מתקשר עם זה, אבל דרך נוספת שזה בעצם 397 00:21:13,170 --> 00:21:16,390 שימושי לחשוב על זה לפעמים, הוא במונחים של שיעורים ואובייקטים. 398 00:21:16,390 --> 00:21:20,420 >> אז במקום לחשוב של כל שולחן כבעל 399 00:21:20,420 --> 00:21:23,040 שורה זו שיש מסוים מידע, שאתה באמת יכול 400 00:21:23,040 --> 00:21:26,100 חושב על זה כ כל שולחן הוא בכיתה, 401 00:21:26,100 --> 00:21:29,810 ולאחר מכן כל מקרה של יש בכיתה מאפיינים מסוימים. 402 00:21:29,810 --> 00:21:35,110 אז, בדוגמא זו, המופעים של הכיתה הן השורות בטבלה, 403 00:21:35,110 --> 00:21:37,490 ולאחר מכן כל נכס היית להיות עמודה בטבלה. 404 00:21:37,490 --> 00:21:40,840 >> אז, ORM שאני אוהב להשתמש נקרא פיווי. 405 00:21:40,840 --> 00:21:43,520 זה ממש קטן, כמו סוג של הבקבוק. 406 00:21:43,520 --> 00:21:46,760 אני חושב שהם הולכים טובים ביחד, אבל יש הרבה ORMs האחר 407 00:21:46,760 --> 00:21:47,730 שאתה יכול להשתמש. 408 00:21:47,730 --> 00:21:52,180 אחד פופולרי יותר הוא ידוע כSQLAlchemy, 409 00:21:52,180 --> 00:21:56,050 ואני לא זוכר למה אני במקור בחר פיווי על SQLAlchemy, 410 00:21:56,050 --> 00:21:58,311 או הייתי אומר לך למה אני חושב שזה אחד הטוב ביותר, 411 00:21:58,311 --> 00:22:01,060 אבל אנחנו רק הולכים להשתמש בזה אחד כי אני יודע איך להשתמש בו. 412 00:22:01,060 --> 00:22:04,760 >> אז, שאלה אחת היא, מדוע אתה צריך לטרוח באמצעות ORM, 413 00:22:04,760 --> 00:22:07,552 במקום רק ישירות כתיבת שאילתות SQL? 414 00:22:07,552 --> 00:22:09,760 ואני חושב שמקרה הטוב, הוא שאתה לא ממש 415 00:22:09,760 --> 00:22:11,356 צריך לכתוב שאילתות SQL. 416 00:22:11,356 --> 00:22:14,480 זה הרבה יותר קל, כפי שאני אראה לך, ל לעשות דברים כמו בחירה, הכנסה, 417 00:22:14,480 --> 00:22:16,157 מחיקה, במיוחד יצירת טבלאות. 418 00:22:16,157 --> 00:22:17,990 זה הרבה יותר קל ל לכתוב מבנה מעמדי, 419 00:22:17,990 --> 00:22:22,250 מאשר לבנות צור הצהרת שולחן, אבל דבר אחד 420 00:22:22,250 --> 00:22:25,710 להיות מודע, הוא ש ORM ינסה כמיטב היכולת 421 00:22:25,710 --> 00:22:28,640 כדי להבין מה הכי שאילתא SQL יעילה תהיה, 422 00:22:28,640 --> 00:22:30,110 אבל לפעמים הוא מקבל את זה לא נכון. 423 00:22:30,110 --> 00:22:32,660 >> ובמיוחד אם אתה עבודה עם מסד נתונים גדול, 424 00:22:32,660 --> 00:22:35,557 אתה יכול לשים לב ששאילתא שיש לפעול במהירות, 425 00:22:35,557 --> 00:22:36,640 הוא למעשה לוקח יותר זמן. 426 00:22:36,640 --> 00:22:40,164 ואם אתה מסתכל מתחת למכסת המנוע בכמה ORM מפרש שלSQL, 427 00:22:40,164 --> 00:22:42,080 זה יכול לעשות משהו באמת מגוחך, 428 00:22:42,080 --> 00:22:44,371 רק בגלל שזה סוג של החווה הכוונות שלך לא בסדר. 429 00:22:44,371 --> 00:22:48,080 ו, היו פעמים שבי היה לי לעקוף אותו, ורק 430 00:22:48,080 --> 00:22:52,429 ביצוע שאילתות SQL שלי, רק כי זה היה ניתוח באופן מוזר. 431 00:22:52,429 --> 00:22:54,220 אז, יש כמה מעל, רק בדרך 432 00:22:54,220 --> 00:22:58,680 שזה הידור שלך הצהרות לתוך SQL. 433 00:22:58,680 --> 00:23:06,200 >> אז, בואו נסתכל סופר במהירות ב דוגמא פשוטה של ​​מודל נתונים 434 00:23:06,200 --> 00:23:07,350 שיהיה אפשר להשתמש. 435 00:23:07,350 --> 00:23:11,880 אז, זה קוד פייתון, וכך הדבר הראשון שאתה רוצה לעשות הוא מ 436 00:23:11,880 --> 00:23:12,950 * יבוא פיווי. 437 00:23:12,950 --> 00:23:15,850 אז, שלא כמו צפחת, שבו יש לך כל מודולים בודדים אלה, 438 00:23:15,850 --> 00:23:18,125 ואתה רוצה לייבא צפחת, ו לכתוב תבנית, וכמה אחרים 439 00:23:18,125 --> 00:23:20,690 שנראה בהמשך, מפיווי, רק אתה יכול לייבא כל דבר, 440 00:23:20,690 --> 00:23:22,290 כי זה ספרייה די קטנה. 441 00:23:22,290 --> 00:23:26,490 >> לכן, הדבר הראשון שאתה רוצה לעשות, הוא למעשה ליצור אובייקט מסד נתונים זה. 442 00:23:26,490 --> 00:23:31,212 אז, יש לך db = SqliteDatabase, ולאחר מכן את השם של מסד הנתונים שלך. 443 00:23:31,212 --> 00:23:33,170 וזה יהיה ממש ליצור אובייקט מסד נתונים 444 00:23:33,170 --> 00:23:36,230 כי אתה יכול לקיים אינטראקציה עם, עם פיווי. 445 00:23:36,230 --> 00:23:40,570 >> ואז, יש לנו בפועל מודל שאנו רוצים ליצור. 446 00:23:40,570 --> 00:23:42,470 אז השולחן שאנחנו רוצים ליצור. 447 00:23:42,470 --> 00:23:47,270 אז, בתוך פיווי, כל כיתה יש שולחן משלו בתוך בסיס הנתונים שלך. 448 00:23:47,270 --> 00:23:52,800 אז, כל הכיתות יורש ממודל הבסיס, 449 00:23:52,800 --> 00:23:55,960 ומודל M ההון הוא משהו שמוגדר בפיווי. 450 00:23:55,960 --> 00:24:02,162 >> אז, כל הדגמים שלך צריך תירש כsuperclass הגבוה ביותר שלהם, 451 00:24:02,162 --> 00:24:04,620 הם צריכים לרשת מ מודל, אבל מה שבאמת מגניב, 452 00:24:04,620 --> 00:24:07,610 הוא שאתה יכול למעשה יש לך מודלים יירשו אחד מהשני. 453 00:24:07,610 --> 00:24:10,530 והרבה הזמן, שלך מודלים של נתונים לא בהכרח 454 00:24:10,530 --> 00:24:13,754 להפוך את היררכית ירושה נחמדה, אבל פעמים שבו הם עושים, זה ממש נחמד, 455 00:24:13,754 --> 00:24:15,920 כי יש לך המודל טבוע אחד מהשני. 456 00:24:15,920 --> 00:24:19,710 >> לכן, אנו מוגדרים המעמד הזה "סטודנט", שיורש מודל, 457 00:24:19,710 --> 00:24:21,170 ויש לו שלושה מאפיינים. 458 00:24:21,170 --> 00:24:24,080 יש לו תעודת זהות, שהוא PrimaryKeyField, ש 459 00:24:24,080 --> 00:24:26,920 הוא משהו שספק על ידי פיווי, שם הוא CharField, 460 00:24:26,920 --> 00:24:28,490 וכיתה היא IntegerField. 461 00:24:28,490 --> 00:24:32,260 אז זה יכול או לא יכול להיות איך CS50 בעצם מאחסן את כל 462 00:24:32,260 --> 00:24:33,650 הציונים של התלמידים. 463 00:24:33,650 --> 00:24:36,060 זה לא, אבל זה איך אני אעשה את זה. 464 00:24:36,060 --> 00:24:37,920 >> ולאחר מכן יש לו, בתוך המעמד הזה, וזה 465 00:24:37,920 --> 00:24:41,620 משהו שאתה יכול לעשות עם פייטון, אתה יכול לקבל שיעורים מקוננים. 466 00:24:41,620 --> 00:24:43,920 וזה משהו מה שנדרש על ידי פיווי. 467 00:24:43,920 --> 00:24:47,250 אז, Meta המעמד הזה, יש לך כדי לציין שהנתונים הוא 468 00:24:47,250 --> 00:24:49,830 שווה לאובייקט שיצרנו לעיל. 469 00:24:49,830 --> 00:24:54,339 וזה אומר מה הוא קובץ טבלה זו למעשה הולך להיות כלול ב. 470 00:24:54,339 --> 00:24:57,130 אז זה משהו שיש לך לעשות בתוך כל הדגמים שלך. 471 00:24:57,130 --> 00:24:59,380 אתה פשוט צריך לציין בתוך כיתה מטה זה 472 00:24:59,380 --> 00:25:01,400 מסד הנתונים שהוא שווה לdb. 473 00:25:01,400 --> 00:25:03,940 אז מה אני עושה בדרך כלל, אם יש לי חבורה של דגמים שונים, 474 00:25:03,940 --> 00:25:05,910 הוא שיש לי בסיס אחד מודל, שאני בדרך כלל 475 00:25:05,910 --> 00:25:08,839 רק מכנה "מודל בסיס" שיש לו את המעמד מטה, 476 00:25:08,839 --> 00:25:10,380 וזה קובע את בסיס הנתונים שווים לdb. 477 00:25:10,380 --> 00:25:13,710 ולאחר מכן את כל הדגמים שלאחר מכן שלי יירש שממחלקת הבסיס. 478 00:25:13,710 --> 00:25:16,760 ואז אני לא צריך לדאוג על הגדרת המעמד מטה. 479 00:25:16,760 --> 00:25:21,490 >> לכן, כאשר זו מקבלת למעשה מלוקט לתוך משפט SQL, 480 00:25:21,490 --> 00:25:24,875 זה נראה כמו הדבר המגעיל הזה למטה כאן, "צור שלם תעודת סטודנט שולחן, 481 00:25:24,875 --> 00:25:26,020 " מה שתגיד. 482 00:25:26,020 --> 00:25:30,002 >> וכן, אני חושב שזה קצר יותר, שאילתא זו SQL ממש כאן, 483 00:25:30,002 --> 00:25:32,960 אבל אם אתה מסתכל על זה בכיתה כאן אתה יכול לראות בדיוק מה קורה. 484 00:25:32,960 --> 00:25:36,116 אתה יכול לראות מה מיני תחומים יש, מה הם נקראים, 485 00:25:36,116 --> 00:25:38,115 וכך, אני חושב ש מסתכל על קוד פייתון זה 486 00:25:38,115 --> 00:25:43,340 הוא הרבה יותר קריא מ מנסה לכתוב שאילתא SQL זו. 487 00:25:43,340 --> 00:25:45,990 >> אז, על מנת למעשה להשתמש במסד הנתונים, 488 00:25:45,990 --> 00:25:48,470 אנחנו צריכים להתחבר אליו בפייתון. 489 00:25:48,470 --> 00:25:52,770 אז, אני בדרך כלל לכתוב פונקציה שנקראת initialize_db שעושה שני דברים. 490 00:25:52,770 --> 00:25:54,880 זה לוקח באתר db אובייקט וזה 491 00:25:54,880 --> 00:25:58,360 מתחבר לזה, שרק נפתח עד סעיף למסד הנתונים. 492 00:25:58,360 --> 00:26:00,860 אם אתה רק פועל למרות אתר במחשב המקומי שלך, 493 00:26:00,860 --> 00:26:04,320 זה לא סופר עניין גדול לדאגה על חיבור וניתוק, 494 00:26:04,320 --> 00:26:06,885 אבל אם אתה מפעיל שלו באתר אינטרנט, אתה 495 00:26:06,885 --> 00:26:10,010 רוצה לוודא ש, כל פעם שמשתמש מתחבר לזה, כשהם סוגרים את 496 00:26:10,010 --> 00:26:12,270 האתר, הם נתקו, כך שאתה אין לי חבורה של אנשים מחוברים 497 00:26:12,270 --> 00:26:14,480 למסד הנתונים שלך בבת אחת. 498 00:26:14,480 --> 00:26:16,370 >> ולאחר מכן, כאשר אתה להתחבר למסד הנתונים, 499 00:26:16,370 --> 00:26:20,832 אתה רוצה לקרוא לdb.create_tables, ורשימת הדגמים למה שאתה רוצה 500 00:26:20,832 --> 00:26:21,540 כדי ליצור טבלאות. 501 00:26:21,540 --> 00:26:23,950 אז הנה, אני רק רוצה ליצור אותו לתלמיד זה. 502 00:26:23,950 --> 00:26:28,070 ואז, מה שחשוב, הוא ל לציין הבטוח ביותר הזמן האמיתי =. 503 00:26:28,070 --> 00:26:30,380 אז מה הצהרה זו יעשה, הוא שזה 504 00:26:30,380 --> 00:26:33,580 יוצר שולחנות ל מודל תלמיד, אלא רק 505 00:26:33,580 --> 00:26:36,109 אם שולחן שיש לא כבר נוצר. 506 00:26:36,109 --> 00:26:37,400 זה מה שמציין בטוח. 507 00:26:37,400 --> 00:26:39,150 אז זה לא יחליף השולחן הקיים שלך, 508 00:26:39,150 --> 00:26:41,525 זה יהיה רק ​​ליצור חדש שולחן אם אין אחד שם. 509 00:26:41,525 --> 00:26:45,090 אז, אתה יכול פשוט ליצור השולחנות אחת באמצעות SQL. 510 00:26:45,090 --> 00:26:49,410 ואז יש לי שישיבת מסד הנתונים שם, ולאחר מכן חבר בכל פעם, 511 00:26:49,410 --> 00:26:52,450 אבל זה בדרך כלל נחמד רק ל לשים בשיחת create_tables זה, 512 00:26:52,450 --> 00:26:55,550 כך שאם אי פעם למוחקך מסד הנתונים כאשר אתה מפעיל האינטרנט שלך 513 00:26:55,550 --> 00:26:57,960 אפליקציה שוב, זה יהיה לשחזר אותו. 514 00:26:57,960 --> 00:27:00,730 >> אז, רק לוודא שבטוח מצוין להיות אמיתי, 515 00:27:00,730 --> 00:27:03,580 או שאתה תמצא את הנתונים שלך פשוט מקבל חבט בכל פעם. 516 00:27:03,580 --> 00:27:06,380 ואז, אתה יכול פשוט לקרוא initialize_db להקים 517 00:27:06,380 --> 00:27:09,820 חיבור, וליצור שולחנות במידת צורך. 518 00:27:09,820 --> 00:27:13,150 >> לכן, הדבר הנפוץ ביותר כי אתה רוצה לעשות, 519 00:27:13,150 --> 00:27:15,920 או אחד הדברים הנפוצים ביותר, הוא להכניס למעשה דברים 520 00:27:15,920 --> 00:27:17,170 לתוך מסד הנתונים שלך. 521 00:27:17,170 --> 00:27:19,430 וכך, במקום שיש לכתוב להכניס לתוך 522 00:27:19,430 --> 00:27:21,990 הצהרה עם כל הערכים שצוינו, 523 00:27:21,990 --> 00:27:24,650 למעשה אתה יכול להתקשר פונקציה בכיתת התלמיד. 524 00:27:24,650 --> 00:27:28,200 לכן, כאשר אתה יוצר כיתה שיורש ממודל, 525 00:27:28,200 --> 00:27:30,200 יש ליצור שיטה זו. 526 00:27:30,200 --> 00:27:33,870 >> אז, אתה עושה name.create כיתה, ומפרט את הפרמטרים 527 00:27:33,870 --> 00:27:35,260 שאתה רוצה להעביר ב. 528 00:27:35,260 --> 00:27:39,200 לכן, אם אני רוצה להוסיף כמה תלמידים לדוגמא הספר בכיתה CS50, 529 00:27:39,200 --> 00:27:41,820 אני אשים בדוד, שיש לו כיתה טובה מאוד, יש לו 95. 530 00:27:41,820 --> 00:27:45,100 ואת עצמי, שלא עושה כל כך טוב בCS50, יש לי 50. 531 00:27:45,100 --> 00:27:47,600 וכך, על הדבר נחמד מה פונקציה ליצור את זה עושה, 532 00:27:47,600 --> 00:27:53,040 הוא שזה מחזיר את הדוגמא, או שורה, שנוצר בתוך הטבלה, 533 00:27:53,040 --> 00:27:55,750 ואז אתה מאחסן שב משתנה, ועבודה עם אותו מאוחר יותר. 534 00:27:55,750 --> 00:27:58,830 באפשרותך לשנות בסביבה, ש אני אראה דוגמא של. 535 00:27:58,830 --> 00:28:03,050 >> שימו לב שאני לא יש לציין את קוד זיהוי, 536 00:28:03,050 --> 00:28:09,340 משום שכן הוא PrimaryKeyField, באופן אוטומטי זה יהיה 537 00:28:09,340 --> 00:28:10,930 להגדיל אותו אם אתה לא לציין את זה. 538 00:28:10,930 --> 00:28:12,250 ואכן, סביר להניח ש לא צריך לציין את זה, 539 00:28:12,250 --> 00:28:14,810 בגלל טעות שאולי לכסח את תעודת זהות של מישהו אחר. 540 00:28:14,810 --> 00:28:16,830 ואתה רוצה לעשות בטוח שזה ייחודי. 541 00:28:16,830 --> 00:28:20,662 >> אז, למעשה, רוב דבר שכיח שאתה רוצה לעשות, 542 00:28:20,662 --> 00:28:22,620 הוא כנראה בחר את של מסד הנתונים ברגע שאתה 543 00:28:22,620 --> 00:28:24,078 יש הרבה מידע שם. 544 00:28:24,078 --> 00:28:27,360 וכך, אם אתה רוצה לקבל הכל, כך המקביל של הכוכב הנבחרים 545 00:28:27,360 --> 00:28:30,940 מהצהרת תלמידים, זה יהיה student.select רק. 546 00:28:30,940 --> 00:28:34,380 וזה ייתן לך בחזרה מערך עם כל תלמיד אובייקטים בזה 547 00:28:34,380 --> 00:28:35,770 שאתה לחזר על שאתה רוצה. 548 00:28:35,770 --> 00:28:37,019 אתה יכול להוציא את דברים מזה. 549 00:28:37,019 --> 00:28:39,310 ורוב הזמן, אתה לא רק רוצה לעשות בחר, 550 00:28:39,310 --> 00:28:40,935 אתה באמת רוצה לציין משהו. 551 00:28:40,935 --> 00:28:44,580 וכך, אתה יכול שרשרת יחד שיחות פונקציה אלה, 552 00:28:44,580 --> 00:28:48,830 כמו איך היית שרשרת יחד הדוחות ב- SQL. 553 00:28:48,830 --> 00:28:53,002 אז אתה יכול לעשות student.select (). בי בדוגמא זו. 554 00:28:53,002 --> 00:28:54,710 ואז, אתה יכול ציין את התנאים, 555 00:28:54,710 --> 00:28:57,880 רק באמצעות פייתון הרגיל Booleans לבדוק דברים. 556 00:28:57,880 --> 00:29:02,110 >> לכן, במקרה זה, אתה רוצה להגביל את מה שאתה בוחר ל, 557 00:29:02,110 --> 00:29:06,790 שם student.grade שווה 50, וstudent.name שווה לעזרא, 558 00:29:06,790 --> 00:29:09,130 כך שרק יוציא אותי מזה. 559 00:29:09,130 --> 00:29:11,340 ושים לב, אחד באמת דבר עדין כאן הוא 560 00:29:11,340 --> 00:29:15,570 כי, אם ברצונך לציין ו / או ואו / או, 561 00:29:15,570 --> 00:29:19,840 בפייתון, שהיית בדרך כלל להשתמש, אני חושב שהמילה "ו-" למעשה, 562 00:29:19,840 --> 00:29:23,351 אבל כאן אתה משתמש אמפרסנד היחיד, שהיא בדרך כלל מפעיל סיבי האופרטור, 563 00:29:23,351 --> 00:29:25,600 אבל במקרה מיוחד זה, רק פיווי הדרך עושה את זה, 564 00:29:25,600 --> 00:29:27,660 אתה משתמש באחת אמפרסנד לציין "ו." 565 00:29:27,660 --> 00:29:29,451 זה משהו ש אני מתערבבים הרבה, 566 00:29:29,451 --> 00:29:32,530 אבל זה לא בא אותו כי הרבה בפועל. 567 00:29:32,530 --> 00:29:36,350 >> ואז, ברגע שיש לך את כל הסטודנטים מבסיס הנתונים, 568 00:29:36,350 --> 00:29:39,420 ברגע שאתה עושה אתה בחר ולבוש או מה שלך, 569 00:29:39,420 --> 00:29:42,334 אתה יכול להשתמש בלולאת foreach, בדיוק כמו רגיל בפייתון, 570 00:29:42,334 --> 00:29:44,500 עם כל סוג של איטרטור או עם כל סוג של מערך. 571 00:29:44,500 --> 00:29:46,333 אז אתה יכול לעשות, לים בstudent.select (). whe 572 00:29:46,333 --> 00:29:52,930 מחדש (Student.grade <75), וכן את הרצון הזה לחזר על כל תלמיד בטבלה 573 00:29:52,930 --> 00:29:56,260 הכיתה שלו הוא פחות מ -75, ש במקרה זה, הוא עדיין רק לי. 574 00:29:56,260 --> 00:29:59,218 ואז אתה יכול לעשות משהו ב לולאה ש, כמו לשלוח לי מייל 575 00:29:59,218 --> 00:30:01,680 ותגיד לי באמת להפוך בסטי הבעיה שלי. 576 00:30:01,680 --> 00:30:04,550 >> אז, אתה יכול עוד דבר לעשות, זה ממש קל 577 00:30:04,550 --> 00:30:06,460 לעדכן שורות בתוך הטבלה. 578 00:30:06,460 --> 00:30:08,720 אז, זוכר לחזור לכאן, שלך כשהוכנסתי, 579 00:30:08,720 --> 00:30:11,440 לקחתי את הערך שהיה חזר על ידי student.create, 580 00:30:11,440 --> 00:30:14,920 ואני שהוקצה אותו לשם בשם עזרא. 581 00:30:14,920 --> 00:30:18,995 אז עכשיו, אתה יכול לשנות את ערכים בתוך מקרה זה, 582 00:30:18,995 --> 00:30:20,870 בדיוק כמו שהיית כיתה רגילה בפייתון. 583 00:30:20,870 --> 00:30:25,060 >> אז אתה יכול להגדיר ezra.grade = 95 ו שיעדכן את העותק המקומי, 584 00:30:25,060 --> 00:30:28,380 אבל אם אתה באמת רוצה להתחייב שינוי שלמסד נתונים, 585 00:30:28,380 --> 00:30:31,410 אתה צריך לקרוא ezra.save, אז אתה נקרא שיטת-save 586 00:30:31,410 --> 00:30:32,650 במופע. 587 00:30:32,650 --> 00:30:38,085 >> אז עכשיו, יש לי השתנה בהצלחה הכיתה שלי בתוך מסד הנתונים. 588 00:30:38,085 --> 00:30:41,210 אז, אז נניח שאני להיתפס שינוי הכיתה שלי בתוך מסד הנתונים. 589 00:30:41,210 --> 00:30:44,126 פרופ מלאן כנראה הולך לרוצה למחוק אותי מהכיתה, 590 00:30:44,126 --> 00:30:48,630 ואז אתה יכול לקרוא .delete שיטה למשל רק על הדבר הזה. 591 00:30:48,630 --> 00:30:51,674 >> לכן, אם אתה רוצה ללכת בחזרה ללולאה זה כאן, 592 00:30:51,674 --> 00:30:53,465 ובעצם, במקום של שליחת הודעות דוא"ל כל 593 00:30:53,465 --> 00:30:56,577 של תלמידי הכיתה שהיא פחות מ -75, שרצית למחוק אותם, 594 00:30:56,577 --> 00:30:58,660 בתוך לולאה זה אתה יכול קורא למשל s.delete. 595 00:30:58,660 --> 00:31:04,180 596 00:31:04,180 --> 00:31:07,780 והדבר האחרון שאתה רוצה לעשות, הוא כל פעם שאתה ליצור חיבור, 597 00:31:07,780 --> 00:31:10,350 ותסיים עם העבודה שלך, אתה רוצה לקרוא לdb.close, 598 00:31:10,350 --> 00:31:13,190 שם DB הוא מסד נתונים ש מתנגד שהיו לנו בעבר. 599 00:31:13,190 --> 00:31:18,290 ואתה רוצה לוודא ש כל מה שמקבל סגור מחוץ. 600 00:31:18,290 --> 00:31:18,790 >> מגניב. 601 00:31:18,790 --> 00:31:22,410 אז עכשיו, יש לי בקשת דוגמא. 602 00:31:22,410 --> 00:31:26,880 אני כבר סוג של טרום-עשיתי כל מה שרק כדי שלא יהיה שום קידוד חי 603 00:31:26,880 --> 00:31:30,220 טעויות, אבל אנחנו יכולים ללכת דרך זה ולראות איך היית לשים Flask 604 00:31:30,220 --> 00:31:33,685 ופיווי יחד, ולהפוך את אפליקציה פשוטה. 605 00:31:33,685 --> 00:31:38,680 אני קורא לזה בטרוף CS50, וזה סוג של פלטפורמת בלוג פשוט. 606 00:31:38,680 --> 00:31:41,150 >> אז, ראשון, אני להפעיל אותו ו להראות איך זה נראה, 607 00:31:41,150 --> 00:31:42,890 ואז אנחנו יכולים להסתכל יותר לקוד. 608 00:31:42,890 --> 00:32:00,470 609 00:32:00,470 --> 00:32:02,830 אוקיי, אז בואו פשוט להפעיל את זה. 610 00:32:02,830 --> 00:32:14,040 611 00:32:14,040 --> 00:32:17,250 מגניב, אני אעשה את זה קצת קטן יותר. 612 00:32:17,250 --> 00:32:20,000 זה לא מאוד יפה, רק בגלל ש אני לא עושה הרבה CSS, 613 00:32:20,000 --> 00:32:23,255 אבל מה שהוא עושה הוא, יש לו מסד נתונים זה של בלוג, 614 00:32:23,255 --> 00:32:25,630 והוא עובר את כל שלהם, והוא יציג אותם 615 00:32:25,630 --> 00:32:28,170 בדף לפי סדר האחרון. 616 00:32:28,170 --> 00:32:30,920 ולכן אלה הם רק כמה הודעות שהצלתי באתר. 617 00:32:30,920 --> 00:32:35,680 >> אז אם אנחנו רוצים ליצור חדשים הודעה, אנחנו יכולים ללכת להוספת הודעה חדשה, 618 00:32:35,680 --> 00:32:42,720 ואנחנו יכולים להיכנס לכותרת של הודעה, כל כך משהו כמו, סמינר CS50. 619 00:32:42,720 --> 00:32:45,360 620 00:32:45,360 --> 00:32:46,735 וואו, ממש נהנה הסמינר. 621 00:32:46,735 --> 00:32:51,070 622 00:32:51,070 --> 00:32:52,270 >> מגניב. 623 00:32:52,270 --> 00:32:56,060 אז אתה לוחץ הודעה, וזה יהיה להפנות אותך חזרה לדף הבית, 624 00:32:56,060 --> 00:33:00,039 ואז אתה תראה ש ההודעה האחרונה נוספה. 625 00:33:00,039 --> 00:33:01,580 ועדיין יש לנו את כל אלה יש. 626 00:33:01,580 --> 00:33:08,080 אז עכשיו, בואו לצעוד דרך כל קוד ולראות איך זה מיושם. 627 00:33:08,080 --> 00:33:11,995 >> אז, אני חושב שהדבר הראשון שבואו תסתכל, למעשה הוא המודלים. 628 00:33:11,995 --> 00:33:14,120 הרבה הזמן, כאשר אתה מעצב משהו, 629 00:33:14,120 --> 00:33:17,036 אתה רוצה לחשוב על איך ראשון אתה הולך לייצג את הנתונים שלך, 630 00:33:17,036 --> 00:33:22,915 ולאחר מכן לעצב דברים מסביב ש, כך שכל מה שהגיוני. 631 00:33:22,915 --> 00:33:25,290 וכי הוא למעשה איך אני עשיתי את זה כשאני היה עושה את זה, 632 00:33:25,290 --> 00:33:28,030 ישבתי וחשבתי, מה שאני רוצה בפוסט. 633 00:33:28,030 --> 00:33:32,130 >> אז, הנה, יש לנו את אותו המבנה שאני להזכיר קודם לכן, 634 00:33:32,130 --> 00:33:33,755 שבו אנחנו עושים db = Sqldatabase ('posts.db'). 635 00:33:33,755 --> 00:33:37,840 636 00:33:37,840 --> 00:33:40,980 במציאות, אתה כנראה לא רוצה קוד קשה במאגרי המידע של השם שלך. 637 00:33:40,980 --> 00:33:43,730 זה כנראה צריך להיות פרמטר שמאוחסן אי שם, אולי 638 00:33:43,730 --> 00:33:45,940 בקובץ הגדרות, אבל ב דוגמא קטנה כמו זה, 639 00:33:45,940 --> 00:33:48,310 זה בסדר קוד קשה שב. 640 00:33:48,310 --> 00:33:53,510 >> אז עכשיו, יש לנו בכיתה הודעה זו, אשר יורש ממודל הבסיס. 641 00:33:53,510 --> 00:33:56,930 ויש לו, שוב, ID = PrimaryKeyField. 642 00:33:56,930 --> 00:34:02,250 למעשה, אם לא תציין, אם אני באמת נפטרתי מזה, 643 00:34:02,250 --> 00:34:07,152 אז פיווי אנו דואגים ל באופן אוטומטי יצירת ששדה מזהה, 644 00:34:07,152 --> 00:34:09,360 וזה באופן אוטומטי לעשות את זה PrimaryKey, ש 645 00:34:09,360 --> 00:34:12,485 אני חושב שזה ממש נחמד, כי בדרך כלל, זה משהו שאתה רוצה שיהיה לי, 646 00:34:12,485 --> 00:34:16,239 אבל אני רוצה לשים את זה באופן ספציפי, רק כך אני זוכר שזה שם. 647 00:34:16,239 --> 00:34:19,480 אבל אם לא תציין כי, שיהיה שם באופן אוטומטי. 648 00:34:19,480 --> 00:34:22,198 >> אז, יש לי תאריך ש הוא DateTimeField, וכל 649 00:34:22,198 --> 00:34:24,864 תחומים שונים אלה, אם אתה מסתכל על תיעוד פיווי, 650 00:34:24,864 --> 00:34:28,920 זה ייתן לך רשימה של שונה סוגים של שדות שאתה יכול להשתמש. 651 00:34:28,920 --> 00:34:34,440 על פי רוב, זה מקביל למה היית רואה ב- SQL. 652 00:34:34,440 --> 00:34:37,699 אז יש CharField, VarCharFields, TextFields, 653 00:34:37,699 --> 00:34:40,550 אשר במשך זמן רב מאוד טקסטים, כמו לכתוב בלוג 654 00:34:40,550 --> 00:34:44,460 פוטנציאל, DateTimeFields, DoubleFields, FloatFields, 655 00:34:44,460 --> 00:34:46,100 כל מיני הדברים כאלה. 656 00:34:46,100 --> 00:34:51,570 >> ואתה יכול לעבור בטיעונים אחרים לזה, שאני לא יציין כאן. 657 00:34:51,570 --> 00:34:55,719 נניח, למשל, שאתה לא רוצה לאפשר לשתי הודעות ליש לו שם, 658 00:34:55,719 --> 00:34:59,672 אתה יכול לציין משהו כמו ייחודי = נכון, 659 00:34:59,672 --> 00:35:02,880 וזה רק פרמטר נוסף ל השדה שכאשר זה הידור אותו 660 00:35:02,880 --> 00:35:06,865 לSQL, זה יהיה לציין כי יש לו להיות ייחודי. 661 00:35:06,865 --> 00:35:09,740 ניתן גם לציין משהו כמו לא ריק וכל הדברים האחרים 662 00:35:09,740 --> 00:35:11,750 אתה עושה בדרך כלל ב- SQL. 663 00:35:11,750 --> 00:35:16,020 אז, זה די פשוט מודל שיש לו את התאריך. 664 00:35:16,020 --> 00:35:19,460 שים לב כאן, בתוך DateTimeField, אני צוין מה הוא ברירת המחדל. 665 00:35:19,460 --> 00:35:22,560 אני צוין שזה יהיה datetime.datetime.now, 666 00:35:22,560 --> 00:35:24,920 בגלל הדרך ש זה מקבל הערכה, 667 00:35:24,920 --> 00:35:28,750 זה באמת מעריך DateTime.Now כאשר 668 00:35:28,750 --> 00:35:32,110 הוא מקבל מוכנס לתוך מסד הנתונים. 669 00:35:32,110 --> 00:35:34,760 >> אני חושב ש, שיהיה לי להכפיל לבדוק את זה, 670 00:35:34,760 --> 00:35:38,222 אבל אם עשית משהו כזה, אז זה היה בעצם להעריך כי ברגע, 671 00:35:38,222 --> 00:35:40,180 ולאחר מכן DateTime תמיד יהיה אותו הדבר. 672 00:35:40,180 --> 00:35:44,240 אז, רק אם אתה עושה משהו עם datetimes, בדוק 673 00:35:44,240 --> 00:35:47,080 שזה הערכה כאשר למעשה מקבל מוכנס, או אחר 674 00:35:47,080 --> 00:35:48,780 אתה עלול להיות מבולבל. 675 00:35:48,780 --> 00:35:51,221 >> הכותרת היא רק CharField, שיש 676 00:35:51,221 --> 00:35:53,970 יותר טיעונים אתה יכול לעבור בציון בדיוק כמה זמן אתה 677 00:35:53,970 --> 00:35:56,170 רוצה שזה יהיה, אבל כאן, זה לא משנה באמת. 678 00:35:56,170 --> 00:35:58,687 וטקסט הולך להיות את הטקסט של כל ההודעה, 679 00:35:58,687 --> 00:36:01,020 וזה הולך להיות TextField רק בגלל שאתה רוצה 680 00:36:01,020 --> 00:36:03,370 כדי לאפשר לו להיות מחרוזת ארוכה למדי. 681 00:36:03,370 --> 00:36:05,970 >> אז יש לנו מטה זה תת שרק 682 00:36:05,970 --> 00:36:11,250 מציין, כי אנחנו רוצים את מסד הנתונים לאן זה נפתח למעשה ל 683 00:36:11,250 --> 00:36:14,267 להיות אובייקט db שיש לנו כאן. 684 00:36:14,267 --> 00:36:16,350 והדבר האחרון שיש לנו כאן, היא רק פונקציה זו 685 00:36:16,350 --> 00:36:18,120 שאנחנו הולכים להשתמש מהיישום העיקרי שלנו 686 00:36:18,120 --> 00:36:23,970 כדי לאתחל את מסד הנתונים כדי להתחבר ל זה, ולאחר מכן ליצור שולחן ההודעה. 687 00:36:23,970 --> 00:36:26,880 >> עכשיו, בואו נסתכל על היישום העיקרי עצמו. 688 00:36:26,880 --> 00:36:30,800 אז זה אחד הוא די עוד קצת יותר מאלה 689 00:36:30,800 --> 00:36:34,840 שראינו בעבר, אבל אני מקווה שלא יותר מדי רע. 690 00:36:34,840 --> 00:36:37,140 אז, תן לי להרחיב את זה. 691 00:36:37,140 --> 00:36:38,370 אוקי. 692 00:36:38,370 --> 00:36:42,070 >> אז, שם לב וראש אני מיובא חבורה של דברים אחרים לגמרי 693 00:36:42,070 --> 00:36:44,129 מן הבקבוק שיש לנו לא באמת ראה בעבר. 694 00:36:44,129 --> 00:36:46,670 ואני מקווה, שאנחנו יכולים לעבור כל אחד מאחד על ידי אלה אחד 695 00:36:46,670 --> 00:36:49,420 ולדבר קצת יותר על שלהם, מסודרים על ידי דוגמא. 696 00:36:49,420 --> 00:36:51,380 אז, יש לנו את הבקבוק, וrender_template, 697 00:36:51,380 --> 00:36:54,370 שראינו בעבר, אובייקט זה בקשה, 698 00:36:54,370 --> 00:37:00,400 אשר עולה כאשר אנו מסתכלים על איך הצורה שאני מראה למעשה 699 00:37:00,400 --> 00:37:01,170 עובד. 700 00:37:01,170 --> 00:37:04,850 הפניה, אשר מאפשר לך להפנות חזרה מצור ההודעה החדשה 701 00:37:04,850 --> 00:37:11,710 חזרה לעמוד הבית המקורי, ולאחר מכן כתובת אתר, וזה משהו שמאפשר לך 702 00:37:11,710 --> 00:37:15,550 להבין היכן ב אתר דף מסוים הוא. 703 00:37:15,550 --> 00:37:17,810 >> אז, הבא דבר שאני עושה, הוא שיבוא 704 00:37:17,810 --> 00:37:21,550 כל המידע מהמודלים קבצים שאנחנו פשוט מסתכלים. 705 00:37:21,550 --> 00:37:23,140 ו, כן. 706 00:37:23,140 --> 00:37:28,720 >> אז, משהו חדש אחר שמגיע עם כאשר אתה מתעסק, 707 00:37:28,720 --> 00:37:31,850 במיוחד מסדי נתונים, הוא שאתה יכול לציין 708 00:37:31,850 --> 00:37:35,110 פונקציה שמקבל נקראת לפני כל בקשה, ופונקציה שמקבלת 709 00:37:35,110 --> 00:37:39,690 קרא אחרי כל בקשה, באמצעות זה בקשת app.before מעצב פונקציה. 710 00:37:39,690 --> 00:37:42,324 >> ואז זה יהיה לקבל להורג בכל מקום בפונקציה זו היא. 711 00:37:42,324 --> 00:37:44,240 זה לא חייב להיות נקרא לפני הבקשה, 712 00:37:44,240 --> 00:37:46,281 אבל בדרך כלל זה משהו הגיוני לקרוא לזה. 713 00:37:46,281 --> 00:37:48,580 714 00:37:48,580 --> 00:37:51,650 אתה יכול לציין מה פונקציה אתה רוצה לקבל נקרא שם, 715 00:37:51,650 --> 00:37:56,330 אז אני צוין initialize_db זה פונקציה שיש לנו גב במודלים 716 00:37:56,330 --> 00:38:02,390 קובץ, ולכן לפני כל בקשה, רוצה להתחבר למסד הנתונים. 717 00:38:02,390 --> 00:38:04,560 >> ישנם שני שונים דרכים אתה יכול לעשות את זה. 718 00:38:04,560 --> 00:38:10,830 אתה יכול לעשות אתapp., אני מאמין שזה after_request. 719 00:38:10,830 --> 00:38:13,800 וההבדל בין after_request וteardown_request, 720 00:38:13,800 --> 00:38:17,590 הוא שafter_request יקרה רק אם הבקשה למעשה הייתה בתוקף. 721 00:38:17,590 --> 00:38:20,440 וכך, רק אם הבקשה הייתה מוצלחת, 722 00:38:20,440 --> 00:38:22,490 אם שום דבר לא ישתבש, אבל teardown_request 723 00:38:22,490 --> 00:38:26,300 קורה במקרה של הצלחה בקשה, או במקרה של שגיאה. 724 00:38:26,300 --> 00:38:28,252 >> אז, בדרך כלל, אתה רוצה להשתמש teardown_request, 725 00:38:28,252 --> 00:38:30,460 אלא אם כן אתה רוצה לעשות משהו, שונה במיוחד 726 00:38:30,460 --> 00:38:31,470 במקרה של טעות. 727 00:38:31,470 --> 00:38:35,122 אבל רק לסגירת בסיס הנתונים, אם זה יצליח או אם זה לא מצליח, 728 00:38:35,122 --> 00:38:37,080 אנחנו עושים ברצונך להתנתק מבסיס הנתונים. 729 00:38:37,080 --> 00:38:41,240 אז זה נקרא, db.close על אובייקט db. 730 00:38:41,240 --> 00:38:43,740 >> שים לב שteardown_request לוקח ביוצא מן הכלל. 731 00:38:43,740 --> 00:38:46,781 אז אתה יכול לבדוק אם יש ממש שגיאה בעת שהסגירה, 732 00:38:46,781 --> 00:38:49,390 אבל כאן, בתקווה, שם לא הרבה שגיאות, 733 00:38:49,390 --> 00:38:52,720 לכן אנחנו פשוט סוג של התעלמות ש. 734 00:38:52,720 --> 00:38:55,990 >> אוקיי, וכל השאר הוא לא רע. 735 00:38:55,990 --> 00:39:02,240 לכן, כאשר אנחנו הולכים לדף הבית, אנחנו שניתנו תבנית home.html זה 736 00:39:02,240 --> 00:39:03,490 שייפתח. 737 00:39:03,490 --> 00:39:06,240 לעבור בהודעה שווה, ומה זה 738 00:39:06,240 --> 00:39:10,260 עושה הוא, לזכור שיש לנו את הפוסט הזה מודל, כך אנו בוחרים כל ההודעות שנכתבו, 739 00:39:10,260 --> 00:39:13,890 ואז עוד דבר שאתה יכול לעשות, ניתן לציין את הסעיף שבו, 740 00:39:13,890 --> 00:39:16,910 ניתן לציין להורות על ידי, ולכן אנחנו לוקחים 741 00:39:16,910 --> 00:39:18,820 כל ההודעות שנכתבו ש לקבל נבחרים, ולאחר מכן 742 00:39:18,820 --> 00:39:22,590 אנו מזמינים אותם על ידי post.date.descending. 743 00:39:22,590 --> 00:39:25,030 ואשר יפרט את, כאשר הם יוצאים למעשה, 744 00:39:25,030 --> 00:39:29,250 האחרון אחד יהיה הראשון אחד. 745 00:39:29,250 --> 00:39:31,420 >> ולאחר מכן, אנחנו עוברים את זה ב תבנית home.html, 746 00:39:31,420 --> 00:39:34,240 אז בואו למעשה לפתוח תבנית שבאמת מהירה, 747 00:39:34,240 --> 00:39:36,760 ותסתכל על איך זה עובד. 748 00:39:36,760 --> 00:39:42,130 וזה לא HTML הגדול, אבל אני מקווה, שנוכל להתמקד בפייתון. 749 00:39:42,130 --> 00:39:46,960 >> אז יש קישור לניו להוסיף הודעה, ואז זה מציין את המסלול 750 00:39:46,960 --> 00:39:51,580 בתוך הבקבוק ש להגדיר, שנמצא ממש כאן. 751 00:39:51,580 --> 00:39:56,310 זהו פוסט התוואי החדש, ואנחנו לציין שעד כאן. 752 00:39:56,310 --> 00:40:00,450 וכך הוא מקשר אז ילכו למסלול שבתוך שרת הבקבוק. 753 00:40:00,450 --> 00:40:03,820 >> הדבר מעניין יותר זה ללולאה כאן. 754 00:40:03,820 --> 00:40:07,685 אז אנחנו לציין שזה הודעה פרמטר ש 755 00:40:07,685 --> 00:40:09,560 עבר ל פונקצית render_template, 756 00:40:09,560 --> 00:40:13,550 לכל הודעה בפוסט של אובייקט שמקבל עבר ב. 757 00:40:13,550 --> 00:40:16,600 אנחנו רוצים להדפיס את כותרת ההודעה, בH1, 758 00:40:16,600 --> 00:40:21,930 ולאחר מכן בהמשך, אנחנו רוצים להדפיס את ההודעה הטקסט בתוך פסקה. 759 00:40:21,930 --> 00:40:25,710 >> וכאן, אנחנו באמת יכולים לקרוא לפונקציה Python, 760 00:40:25,710 --> 00:40:35,130 כדי שנוכל לקרוא strftime, ST-RF-זמן, ואתה יכול לעבור במחרוזת הפורמט 761 00:40:35,130 --> 00:40:37,064 שברצונך להדפיס את הנתונים ב. 762 00:40:37,064 --> 00:40:39,980 אז זה די נחמד שאתה יכול למעשה לקרוא לפונקצית פייתון זה 763 00:40:39,980 --> 00:40:41,090 מתוך כאן. 764 00:40:41,090 --> 00:40:44,370 אתה לא צריך לעשות את העיצוב ב צד בקר, כי באמת, 765 00:40:44,370 --> 00:40:47,770 עיצוב התאריך הוא משהו ש אתה רוצה להתמודד בתצוגה. 766 00:40:47,770 --> 00:40:51,480 >> וכל אלה אחוזים דברים הוא לא סופר חשוב. 767 00:40:51,480 --> 00:40:55,270 אם אתה מסתכל למעלה בתיעוד לפונקצית strftime בפייתון, 768 00:40:55,270 --> 00:40:57,040 זה מפרט את כל אלה דברים, אבל זה של 769 00:40:57,040 --> 00:40:59,190 איך, מתי שאנחנו מחפשים בדף הבית כאן, 770 00:40:59,190 --> 00:41:04,440 זה פורמטים זה עם נחמד תאריך, ובוקר הוא מציין או בערב, 771 00:41:04,440 --> 00:41:09,410 אבל בדרך כלל, אם לא היה לי זה כאן, 772 00:41:09,410 --> 00:41:14,024 אתה בטח מקבל כמה זבל תאריך שלא נראה טוב מאוד. 773 00:41:14,024 --> 00:41:15,940 ולאחר מכן אנו מגדירים את post.text, ושאני יכול 774 00:41:15,940 --> 00:41:19,460 יש לשים כמה מעברי שורה כאן, רק 775 00:41:19,460 --> 00:41:21,820 לשים בין כל הודעה כמה חללים. 776 00:41:21,820 --> 00:41:26,270 >> לכן, אני חושב חשוב ביותר דבר בדוגמא זו, 777 00:41:26,270 --> 00:41:28,697 הוא שאתה יכול להשתמש בזה ללולאה. 778 00:41:28,697 --> 00:41:30,780 וזה דומה ל דברים שאתה יכול לעשות בPHP. 779 00:41:30,780 --> 00:41:32,905 אתה יכול לחזר דרך, כל מה שמקבל בעבר, 780 00:41:32,905 --> 00:41:36,719 וכך, במקום שיש לעשות העתק / דבק, העתק / דבק כל HTML, 781 00:41:36,719 --> 00:41:40,010 אתה רק צריך לכתוב את זה פעם אחת, ולאחר מכן אתה יכול לחזר על כל ההודעות שנכתבו. 782 00:41:40,010 --> 00:41:41,510 >> וזה משהו נפוץ שברצונך 783 00:41:41,510 --> 00:41:44,510 לעשות, כאשר יש לך הרבה נתונים, הוא שעל כל דבר בנתונים שלך, 784 00:41:44,510 --> 00:41:48,370 אתה רוצה לעשות דבר דומה. 785 00:41:48,370 --> 00:41:51,690 ואז, רק לזכור, שכאשר אתה רוצה להדפיס משהו באופן מפורש 786 00:41:51,690 --> 00:41:54,780 ב- HTML, אתה משתמש ב הפלטה הכפולה כאן, 787 00:41:54,780 --> 00:41:57,820 אבל אז כאשר אתה רוצה לציין קצת מידע על מצב, 788 00:41:57,820 --> 00:42:02,430 או על ללולאה, אתה להשתמש בסוגר אחוזים. 789 00:42:02,430 --> 00:42:08,730 >> אז, חוזר לפייתון קוד, כך שמסביר 790 00:42:08,730 --> 00:42:12,242 מה שקורה בעיקרי מסלול, כאשר אנחנו הולכים לשם, 791 00:42:12,242 --> 00:42:14,450 זה פשוט מציג את כל הודעות, אבל אז השאלה 792 00:42:14,450 --> 00:42:17,440 הוא, איך אנחנו מקבלים למעשה הודעות לתוך מסד הנתונים, ש 793 00:42:17,440 --> 00:42:18,970 הוא קצת יותר מעניין. 794 00:42:18,970 --> 00:42:23,960 >> לכן, כאשר אתה לוחץ על חדש קישור הודעה, שראינו כאן, 795 00:42:23,960 --> 00:42:26,000 זה מפנה אותך לטופס זה. 796 00:42:26,000 --> 00:42:29,580 וזה רק שיחה פשוטה ל פונקצית render_template, אשר לאחר מכן 797 00:42:29,580 --> 00:42:32,110 עובר בפוסט החדש בטופס HTML. 798 00:42:32,110 --> 00:42:36,212 אז בואו נסתכל על זה. 799 00:42:36,212 --> 00:42:37,420 אז זה אחד הוא די פשוט. 800 00:42:37,420 --> 00:42:45,110 יש לה טופס HTML פשוט, ש ייראה קצת מוכר, 801 00:42:45,110 --> 00:42:47,380 המבוסס על הצורות בCS50 האוצר. 802 00:42:47,380 --> 00:42:49,940 וכך, אנו מציינים כאן, הפעולה. 803 00:42:49,940 --> 00:42:52,435 וכאן, אם אתה עובד עם PHP, בדרך כלל, זה 804 00:42:52,435 --> 00:42:55,930 יהיה משהו כמו, create.PHP, אבל כאן 805 00:42:55,930 --> 00:42:59,960 אנחנו בעצם לציין מסלול בתוך שרת הבקבוק. 806 00:42:59,960 --> 00:43:02,520 וכך, בדרך זו, מקבילה לתוואי ליצור 807 00:43:02,520 --> 00:43:05,680 שיש לנו כאן, ש נלך בשני. 808 00:43:05,680 --> 00:43:07,630 >> וכך, אנו מציינים כי זה פוסט שיטה, 809 00:43:07,630 --> 00:43:09,820 כי אנחנו רוצים לשלוח נתונים זה צורה, ובדרך כלל 810 00:43:09,820 --> 00:43:12,945 כאשר אתה שולח נתונים מטופס, אולי כדאי לך להשתמש בפוסט בקשה, 811 00:43:12,945 --> 00:43:15,760 רק כדי שלא בסופו עם כתובת האתר הגדול, המסורבל הזה. 812 00:43:15,760 --> 00:43:18,970 אבל אתה יכול גם להשתמש בבקשת GET, ולהעביר אותו בניתוב עם משתנה, 813 00:43:18,970 --> 00:43:21,170 אבל לצורות, זה נחמד לפוסט בקשה כאן. 814 00:43:21,170 --> 00:43:24,620 וכך לאחר מכן, בדיוק כמוך היה עושה עם HTML ו- PHP, 815 00:43:24,620 --> 00:43:28,420 אתה יכול לציין תשומות טקסט אלה, ואתה יכול לציין את שמם, 816 00:43:28,420 --> 00:43:33,490 וזה השם שיקבל עבר לאובייקט הבקשה בתוך הבקבוק. 817 00:43:33,490 --> 00:43:36,960 >> ואז יש לנו שלח כפתור שאומרת הודעה. 818 00:43:36,960 --> 00:43:40,760 וכאן, הודעה היא שמו של כפתור, כי זה פוסט בבלוג, 819 00:43:40,760 --> 00:43:42,700 אבל כאן, הודעה היא שיטת הבקשה. 820 00:43:42,700 --> 00:43:47,060 אז אלה הם אותה המילה אבל שאינו קשור למעשה. 821 00:43:47,060 --> 00:43:48,460 כֵּן 822 00:43:48,460 --> 00:43:54,800 >> חוזר לקוד פייתון, כאשר אנו נקראים ליצור שיטה, 823 00:43:54,800 --> 00:43:57,702 שם לב כאן שאתה יכול למעשה לציין במסלול 824 00:43:57,702 --> 00:44:00,650 שיטות הבקשה שאתה רוצה לקבל, 825 00:44:00,650 --> 00:44:04,770 ואז הנה, אני מציין לי ש רק רוצה לקבל את שיטת הודעה. 826 00:44:04,770 --> 00:44:09,800 לכן, אם אני ממש מנסה לבקר בדף ישירות, אשר באמצעות בקשת GET, 827 00:44:09,800 --> 00:44:11,700 הוא יגיד לי "שיטה אינה מותרת." 828 00:44:11,700 --> 00:44:15,840 >> וכך, יש לך דפים, כמו סוג של דף יצירה זו, שאני רק 829 00:44:15,840 --> 00:44:20,192 באמת משתמש כדרך ל הטופס כדי שהוגש, 830 00:44:20,192 --> 00:44:22,900 אתה יכול לציין שאתה לא רוצה שאנשים יוכלו ללכת לשם 831 00:44:22,900 --> 00:44:25,650 ישירות באמצעות בקשת GET, או אם אתה לא רוצה, 832 00:44:25,650 --> 00:44:28,580 מסיבה כלשהי, בקשת הודעה, אתה יכול פשוט לציין להגיע לכאן, 833 00:44:28,580 --> 00:44:32,720 אבל בדוגמא זו, אנחנו פשוט רוצה בקשת ההודעה לצאת. 834 00:44:32,720 --> 00:44:38,700 >> לכן, כאשר create_post נקרא, כאשר אנחנו מבקרים שבאמצעות בקשת ההודעה, 835 00:44:38,700 --> 00:44:43,600 בכל פעם שאתה הולך לבפרט מסלול, יש אובייקט בקשה זו, 836 00:44:43,600 --> 00:44:46,640 והיינו צריכים לייבא בקשות בחלקו העליון, 837 00:44:46,640 --> 00:44:49,640 אבל יש בקשה זו אובייקט שמקבל עבר ב, 838 00:44:49,640 --> 00:44:53,210 ואתה יכול לגשת לנתוני הטופס, אשר באופן אוטומטי לקבל מלא 839 00:44:53,210 --> 00:44:55,070 כאשר אתה שולח בקשה מטופס. 840 00:44:55,070 --> 00:44:56,990 >> ואז, מה שאני חושב זה ממש מגניב, הוא 841 00:44:56,990 --> 00:45:02,840 שאובייקט הטופס למועבר ב, הוא רק מילון פייתון ש 842 00:45:02,840 --> 00:45:10,560 מכיל, אם אתה access-- אז הנה, בואו שלי למשוך את HTML לידו, רק 843 00:45:10,560 --> 00:45:17,670 כך שאתה יכול להיות ש כנקודת התייחסות, כן, כל כך 844 00:45:17,670 --> 00:45:21,060 השמות שציינו כאן לתחומים השונים, כך 845 00:45:21,060 --> 00:45:23,900 הכותרת ואת הטקסט, אנחנו אז פשוט להשתמש באותם כאן 846 00:45:23,900 --> 00:45:27,110 כמדדים לנתוני הטופס. 847 00:45:27,110 --> 00:45:28,950 אז זה סופר נוח. 848 00:45:28,950 --> 00:45:33,320 >> אז אנחנו קוראים post.create, ש ייצור באופן אוטומטי ולהכניס 849 00:45:33,320 --> 00:45:36,850 הודעה אובייקט זה חדש לתוך מסד הנתונים. 850 00:45:36,850 --> 00:45:40,690 ואני חושב שזה ליצור פונקציה כאן היא דוגמא ממש מגניב של איך 851 00:45:40,690 --> 00:45:44,900 Flask רב עוצמה ועבודה עם זה, כי אם אתה עושה משהו 852 00:45:44,900 --> 00:45:48,660 ב- PHP, אולי יש לך ל לעשות הרבה אימות, 853 00:45:48,660 --> 00:45:51,730 היית צריך אז ליצור חיבור מסד נתונים, 854 00:45:51,730 --> 00:45:55,210 היית צריך אז להפעיל את שאילתא SQL, 855 00:45:55,210 --> 00:45:59,550 אבל כאן בדיוק יש לנו זה נחמד post.create, שאותם אנו יכולים רק 856 00:45:59,550 --> 00:46:01,520 לקבל את המידע החוצה של אובייקט הבקשה, 857 00:46:01,520 --> 00:46:05,370 ולאחר מכן להעביר אותו לחדש לפרסם שאנחנו יוצרים. 858 00:46:05,370 --> 00:46:07,850 >> ולאחר מכן, האחרון דבר שאנחנו רוצים לעשות, 859 00:46:07,850 --> 00:46:09,630 הוא להפנות בחזרה למשתמש הביתי. 860 00:46:09,630 --> 00:46:13,020 וכך אנו משתמשים זה בקבוק להפנות פונקציה. 861 00:46:13,020 --> 00:46:17,770 ומשהו שאנחנו לא ראינו לפני, הייתה פונקצית כתובת אתר זו. 862 00:46:17,770 --> 00:46:21,970 אז את כתובת האתר לפונקציה מאפשרת לי אתה עובר בלמעשה שם 863 00:46:21,970 --> 00:46:26,090 של פונקציה בקוד פייתון, במקום מסלול המסוים 864 00:46:26,090 --> 00:46:26,720 שזה ב. 865 00:46:26,720 --> 00:46:32,107 >> אז אני יכול להיות באותה קלות מנותב למשתמש לחתוך, 866 00:46:32,107 --> 00:46:37,050 שתשלח אותו בחזרה הביתה, אבל באמצעות כתובת האתר לפונקציה היא נחמדה, 867 00:46:37,050 --> 00:46:39,990 כי אם אתה לשנות את מיקום שבו דברים, 868 00:46:39,990 --> 00:46:44,080 אז נניח שאני משנה את הבית להיות ב/ בית במקום, 869 00:46:44,080 --> 00:46:47,040 זה היה עדיין אז לחזור / בית, משום שמתרחש בפועל ומסתכל למעלה 870 00:46:47,040 --> 00:46:50,770 שם הפונקציה, וזה ייתן לך לגבות את כתובת האתר על זה. 871 00:46:50,770 --> 00:46:52,490 >> אז, סוג של ב הנחה שאתה 872 00:46:52,490 --> 00:46:55,489 סביר יותר לשנות בו דברים הם, יותר מהשמות של הפונקציות. 873 00:46:55,489 --> 00:46:58,840 אתה יכול להשתמש בזה באמת כתובת אתר נחמד לפונקציה. 874 00:46:58,840 --> 00:47:02,470 ועוד דבר אחד כדי להיות מודע ל זה קצת מסובך, 875 00:47:02,470 --> 00:47:05,750 הוא שאתה חושב שאתה יכול פשוט קוראים להפנות על כתובת האתר ל, 876 00:47:05,750 --> 00:47:10,600 אבל בעצם כל הנתיבים יש לי לחזור קצת סוג של טקסט ו- HTML, 877 00:47:10,600 --> 00:47:14,360 אז אתה באמת צריך להחזיר את שיחת ההפניה. 878 00:47:14,360 --> 00:47:18,379 אחרת, אתה תקבל משהו לא חוקי על לא חוזר מחרוזת, 879 00:47:18,379 --> 00:47:21,420 בגלל כל אלה יש לחזור HTML אתה באמת רוצה להבהיר. 880 00:47:21,420 --> 00:47:26,980 >> וכך, כאשר אתה קורא את ההפניה, זה מפנה אותך לדף, 881 00:47:26,980 --> 00:47:30,270 אבל זה בעצם מחזיר את ה- HTML אתה צריך לבצע הפניה ש. 882 00:47:30,270 --> 00:47:34,430 883 00:47:34,430 --> 00:47:37,110 חזור אל דף הבית. 884 00:47:37,110 --> 00:47:39,200 אז יש לנו שתי תצוגות שונות אלה. 885 00:47:39,200 --> 00:47:40,132 יש לנו את הנוף הביתה. 886 00:47:40,132 --> 00:47:41,590 או, אני מניח שאני צריך לומר תבניות. 887 00:47:41,590 --> 00:47:44,190 יש לנו שתי תבניות אלה, תבנית הבית ש 888 00:47:44,190 --> 00:47:48,500 מציג את כל ההודעות שלנו, ו אז יש לנו דבר פרסומת הזאת, 889 00:47:48,500 --> 00:47:52,970 וכאשר אתה לוחץ על ההודעה, זה הולך לתוואי חדש בתוך הבקבוק, 890 00:47:52,970 --> 00:47:55,920 אבל המסלול שאינו בהכרח יש תבנית מקבילה. 891 00:47:55,920 --> 00:47:59,290 892 00:47:59,290 --> 00:48:01,560 אתה לא צריך לראות שום דבר, אבל אתה עדיין יכול 893 00:48:01,560 --> 00:48:04,090 יש לי עבודה זו הולכת מאחורי הקלעים. 894 00:48:04,090 --> 00:48:07,450 ואז אתה מקבל מנותב לגבות לדף הבית. 895 00:48:07,450 --> 00:48:12,230 ובהחלט, זה קל לעבוד בחלק CSS יותר נחמד לתבנית 896 00:48:12,230 --> 00:48:15,580 ולהפוך את זה נראה הרבה יותר נחמד, אבל כל ההיגיון העיקרי 897 00:48:15,580 --> 00:48:18,590 יש בפייתון. 898 00:48:18,590 --> 00:48:20,020 >> כל שאלות על דוגמא ש? 899 00:48:20,020 --> 00:48:22,760 אני יודע שיש הרבה דברים שונים קורה שם, 900 00:48:22,760 --> 00:48:25,341 הרבה דברים שלא ראינו לפני, אבל כמו כל דבר. 901 00:48:25,341 --> 00:48:25,840 כֵּן. 902 00:48:25,840 --> 00:48:28,346 >> קהל 1: האם יש לך לעשות שום דבר מיוחד לקרצף נתונים זה 903 00:48:28,346 --> 00:48:29,600 מגיע מהטופס? 904 00:48:29,600 --> 00:48:31,109 שמתי לב שאמרת "ליצור" 905 00:48:31,109 --> 00:48:33,900 עזרא זיגמונד: כן, אז זה למעשה, זה נקודה ממש טובה. 906 00:48:33,900 --> 00:48:36,350 אז השאלה הייתה, האם אתה צריך לבדוק ולוודא 907 00:48:36,350 --> 00:48:39,190 כי הנתונים הנו בתוקף, ו לעשות כל סוג של קרצוף 908 00:48:39,190 --> 00:48:41,840 כדי לוודא שזה חוקי, כי כפי שאתה יכול לראות כאן, 909 00:48:41,840 --> 00:48:42,660 אני לא עושה את זה. 910 00:48:42,660 --> 00:48:48,140 אז בואו לראות מה קורה אם אני שולח משהו ריק. 911 00:48:48,140 --> 00:48:51,190 אז, זה יהיה ממש פשוט לעשות הודעה וריקה למלא בDateTime. 912 00:48:51,190 --> 00:48:55,990 >> אז במציאות, אתה כנראה היית רוצה לעשות משהו כמו, 913 00:48:55,990 --> 00:49:04,749 אולי לציין אם הכותרת היא שווה ל המחרוזת הריקה, אז לא עושה את זה. 914 00:49:04,749 --> 00:49:07,290 או, רק לעשות את זה אם הכותרת היא לא שווה למחרוזת הריקה. 915 00:49:07,290 --> 00:49:10,330 כך שזה לא ממש באופן אוטומטי דואג לקרצוף ש 916 00:49:10,330 --> 00:49:12,820 בשבילך, כך שאתה עדיין צריך לעשות את זה. 917 00:49:12,820 --> 00:49:14,330 כן, שאלה טובה. 918 00:49:14,330 --> 00:49:18,497 >> קהל 2: האם זה לשפשף להזרקת המשך? 919 00:49:18,497 --> 00:49:19,890 את יודעת? 920 00:49:19,890 --> 00:49:22,830 >> עזרא זיגמונד: יש לקוות, פיווי עושה את זה. 921 00:49:22,830 --> 00:49:25,830 אני חושב שזה בהחלט יהיה יפה ספרייה רעה אם הוא לא עשה את זה. 922 00:49:25,830 --> 00:49:29,511 923 00:49:29,511 --> 00:49:32,690 אני לא יודע בדיוק. 924 00:49:32,690 --> 00:49:34,820 הייתי צריך להסתכל על שאילתה שנוצר. 925 00:49:34,820 --> 00:49:38,980 אני חושב שאם אני הקלדתי ב פוסט בבלוג שנראה סוג של 926 00:49:38,980 --> 00:49:46,370 כמו התקפת הזרקת SQL, משהו כזה, אם זה 927 00:49:46,370 --> 00:49:49,370 הוא כמו שדה סיסמא או משהו, אתה יכול לעשות משהו כזה. 928 00:49:49,370 --> 00:49:53,410 >> אני חושב שעדיין יהיה לקבל פורסם פשוטו כמשמעו, 929 00:49:53,410 --> 00:49:59,200 אבל אני חושב שפיווי עושה איזה קרצוף של נתונים 930 00:49:59,200 --> 00:50:01,680 לפני שזה באמת מבצע אותו. 931 00:50:01,680 --> 00:50:04,510 >> קהל 1: זה שדה הטקסט הוא שנועד לקחת טקסט רגיל, נכון? 932 00:50:04,510 --> 00:50:05,710 >> עזרא זיגמונד: כן, זה הוא. 933 00:50:05,710 --> 00:50:06,465 כֵּן. 934 00:50:06,465 --> 00:50:09,590 אז אני חושב שכל, אז זה התנהגות נכונה, שתעשה את זה, 935 00:50:09,590 --> 00:50:12,170 אבל אני חושב שפיווי אני מקווה עושה לעשות 936 00:50:12,170 --> 00:50:13,780 איזה הגנה על הקצה שלהם. 937 00:50:13,780 --> 00:50:16,090 ואם אתה רוצה בדוק שיש 938 00:50:16,090 --> 00:50:19,530 דרכים כאשר אתה יוצר שאילתא. 939 00:50:19,530 --> 00:50:22,622 ולכן אין לך לבצע את זה באופן ישיר. 940 00:50:22,622 --> 00:50:24,330 הייתי צריך לקחת להסתכל תיעוד, 941 00:50:24,330 --> 00:50:27,930 אבל למעשה אתה יכול להציג את SQL שהוא מייצר, 942 00:50:27,930 --> 00:50:30,840 ותסתכל על זה, ולעשות בטוח שהוא נמלט דברים. 943 00:50:30,840 --> 00:50:33,700 >> סיבה נוספת למה אתה עשוי רוצה להסתכל על SQL 944 00:50:33,700 --> 00:50:37,920 פיווי שהפלט, הוא אם דברים נראים הולכים ממש לאט, 945 00:50:37,920 --> 00:50:41,090 אתה יכול להעיף מבט ולראות מה זה עושה בעצם, כי זה לפעמים 946 00:50:41,090 --> 00:50:44,670 קל להוסיף בטעות ב, הדרך שאתה כותב את זה, 947 00:50:44,670 --> 00:50:47,880 אתה יכול לקבל את זה בטעות בחר את מסד הנתונים כולו ראשון, 948 00:50:47,880 --> 00:50:50,230 ואז לעשות קצת פעולת מיון שב, כאשר אתה באמת 949 00:50:50,230 --> 00:50:51,320 אמור לבחור תת קבוצה. 950 00:50:51,320 --> 00:50:53,560 >> וכך, אם דברים אינם די הולך ימינה, 951 00:50:53,560 --> 00:50:57,300 זה טוב ליסתכל על הבקשה זה בעצם מקבל שנוצר. 952 00:50:57,300 --> 00:50:57,800 כֵּן. 953 00:50:57,800 --> 00:51:02,100 >> קהל 2: כאשר אתה ראשון התחיל, אתה שם בנמל כ5000. 954 00:51:02,100 --> 00:51:02,904 >> עזרא זיגמונד: כן. 955 00:51:02,904 --> 00:51:06,070 קהל 2: האם ברירת המחדל עם פיווי, או שזה משהו שאתה יכול לשנות? 956 00:51:06,070 --> 00:51:10,870 עזרא זיגמונד: כן, כל כך נמל הוא ברירת מחדל עם בקבוק. 957 00:51:10,870 --> 00:51:13,061 אם אתה מפעיל את זה בלי מפרט כל דבר, 958 00:51:13,061 --> 00:51:14,310 זה יהיה באופן אוטומטי לעשות את זה. 959 00:51:14,310 --> 00:51:16,060 אני מאמין, שאהיה לי להכפיל לבדוק את זה, 960 00:51:16,060 --> 00:51:19,130 אבל אתה יכול לציין כי בapp.run, אני חושב שאתה יכול לעשות משהו כזה, 961 00:51:19,130 --> 00:51:19,629 יציאה = 8080. 962 00:51:19,629 --> 00:51:22,375 963 00:51:22,375 --> 00:51:23,750 בואו לתת שמנסה ממש מהר. 964 00:51:23,750 --> 00:51:29,100 965 00:51:29,100 --> 00:51:32,230 כן, כך שאתה יכול רק לציין יציאה = 8080, וזה יפעל אותו שם, 966 00:51:32,230 --> 00:51:36,130 שאני חושב, אם אתה רוצה להפעיל אותו על IDE, אני לא ניסיתי את זה, 967 00:51:36,130 --> 00:51:38,527 אבל אני חושב שאם אתה ניהל אותו ביציאה 8080, 968 00:51:38,527 --> 00:51:40,360 אתה כנראה אהיה מסוגל כדי לגשת לשרת, 969 00:51:40,360 --> 00:51:41,870 בדיוק כמו שהייתם לאתר. 970 00:51:41,870 --> 00:51:44,390 >> כן, אבל זה קל כדי לשנות את זה אם אתה 971 00:51:44,390 --> 00:51:48,540 יש כל סוג של יציאה-העברה כמו דברים שאתה צריך לעשות. 972 00:51:48,540 --> 00:51:50,410 >> כל שאלות אחרות? 973 00:51:50,410 --> 00:51:50,916 כֵּן? 974 00:51:50,916 --> 00:51:53,416 קהל 1: אז, ראיתי בך דגמים ש, כפי שציינתם, 975 00:51:53,416 --> 00:51:55,647 אתה צריך לציין את מסד הנתונים עבור כל אובייקט. 976 00:51:55,647 --> 00:51:58,105 האם אתה יודע במקרה, עושה זה עושה את זה ממש קל אם אתה 977 00:51:58,105 --> 00:52:03,210 יש לי המון מאגרי SQLite ש רוצה להשתמש לאינטרנט אפליקציה אחת, 978 00:52:03,210 --> 00:52:07,210 כי אתה יכול רק לציין חבורה של אלה שונים במודל שלך? 979 00:52:07,210 --> 00:52:11,620 >> עזרא זיגמונד: כן, תן לי לפתוח שעד מהיר אמיתי. 980 00:52:11,620 --> 00:52:17,570 אז, אתה אומר, אם אתה רוצה להיות חבורה של משהו אחר, אולי 981 00:52:17,570 --> 00:52:22,670 אוהב והסטודנטים, עבור חלק סיבה, משהו כזה? 982 00:52:22,670 --> 00:52:26,870 כן, אז אני חושב ש אתה עדיין, כל דגם 983 00:52:26,870 --> 00:52:30,652 היה עדיין יש רק מסד נתונים אחד שהוקצה לה, 984 00:52:30,652 --> 00:52:32,610 אבל אם אתה רוצה יש לי מודלים שונים ש 985 00:52:32,610 --> 00:52:35,818 יש אובייקטי מסד נתונים שונים שהוקצו לזה, אתה יכול בהחלט לעשות את זה. 986 00:52:35,818 --> 00:52:43,070 לכן, אם אני יצרתי חדש, משהו כזה, 987 00:52:43,070 --> 00:52:47,000 ועכשיו זה הוא סטודנט ש נראה באופן מוזר כמו לכתוב בלוג, 988 00:52:47,000 --> 00:52:49,390 אני יכול לציין ש מסד הנתונים הוא שווה לdb_2 כאן. 989 00:52:49,390 --> 00:52:51,390 אז, אני חושב שזה הדרך העיקרית שאתה יכול לעשות את זה. 990 00:52:51,390 --> 00:52:54,560 991 00:52:54,560 --> 00:52:56,200 >> מגניב. 992 00:52:56,200 --> 00:52:58,410 כל שאלות אחרות? 993 00:52:58,410 --> 00:53:02,170 >> אז רק כדי לסיים אותו קצת קצת, הנה כמה משאבים, 994 00:53:02,170 --> 00:53:06,030 ושקופיות אלה יפורסמו באינטרנט כך שאתה ממש יכול להגיע לקישורים אלה. 995 00:53:06,030 --> 00:53:08,500 המשאבים הטובים ביותר הם באמת בתיעוד של צפחת 996 00:53:08,500 --> 00:53:09,930 ופיווי עצמם. 997 00:53:09,930 --> 00:53:12,940 הם כתובים ממש טובים, אני חושב. 998 00:53:12,940 --> 00:53:18,180 אז, באתר האינטרנט של הבקבוק הוא כאן, ו יש להם הדרכה על התחלה מהירה ש 999 00:53:18,180 --> 00:53:20,710 יצעד דרך דומה דברים למה שהלכתי ב, 1000 00:53:20,710 --> 00:53:23,560 אבל אם אתה רוצה כל סוג של ביקורת מהדברים שאני ניגשתי, 1001 00:53:23,560 --> 00:53:26,200 או שחשבת שהסברתי משהו בדרך מבלבלת, 1002 00:53:26,200 --> 00:53:28,390 תהיה להם דוגמאות דומות שם. 1003 00:53:28,390 --> 00:53:31,570 >> יש פיווי תיעוד, ו יש להם הדרכה על התחלה מהירה 1004 00:53:31,570 --> 00:53:34,650 שהולך על הפרמטרים העיקריים כי אתה רוצה להשתמש. 1005 00:53:34,650 --> 00:53:38,900 אז, הדברים שדיברתי על עם ברירות מחדל הייחודיות, ומפרטים, 1006 00:53:38,900 --> 00:53:42,710 הסוגים השונים של שדות ש אתה יכול להשתמש, אלה יהיו שם כולם. 1007 00:53:42,710 --> 00:53:44,690 >> כמו כן, אם יש לך שאלות על פיווי, 1008 00:53:44,690 --> 00:53:47,530 ושתפרסם אותם על StackOverflow, הבחור שעשה פיווי למעשה 1009 00:53:47,530 --> 00:53:49,500 הולך והתשובות האלה לפעמים. 1010 00:53:49,500 --> 00:53:53,200 אם יש לך שאלה, אני מקווה הוא יהיה מסוגל לענות עליה, 1011 00:53:53,200 --> 00:53:54,867 כי הוא כתב את כל העניין. 1012 00:53:54,867 --> 00:53:56,700 אני חושב שזה כל מה ש אני רוצה לכסות. 1013 00:53:56,700 --> 00:53:58,930 תודה על שיצא. 1014 00:53:58,930 --> 00:54:02,688