איך ליצור אפליקציה Django ולחבר אותה למסד נתונים

הקדמה

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

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

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

דרישות מוקדמות

כדי לעקוב אחרי המדריך הזה, יהיה עליך להפקיד:

כאשר הכל מותקן ומוגדר, תוכל להמשיך לשלב הראשון.

שלב 1 — יצירת מסד הנתונים

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

כדי להגדיר זאת, יש להתחבר למסד הנתונים שלך כמשתמש ה MySQL root באמצעות הפקודה הבאה:

  1. sudo mysql

תדע שאתה בשרת MySQL כאשר המפתח משתנה:

תבדוק את מסדי הנתונים הנוכחיים באמצעות הפקודה הבאה:

  1. SHOW DATABASES;

הפלט שלך יהיה דומה לזה שלמטה, בהנחה שלא יצרת מסדי נתונים עדיין:

Output
+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.00 sec)

כברירת מחדל, יהיו לך 4 מסדי נתונים שנוצרו מראש: information_schema, MySQL, performance_schema ו־sys. אין צורך לגעת בהם, מאחר והם מכילים מידע חשוב עבור שרת ה MySQL עצמו.

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

ליצור מסד נתונים ב־MySQL, הריצו את הפקודה הבאה, בשימוש בשם משמעותי עבור המסד הנתונים שלכם:

  1. CREATE DATABASE blog_data;

בהצלחה ביצור המסד הנתונים, הפלט יהיה הבא:

Output
Query OK, 1 row affected (0.00 sec)

וודאו שהמסד נתונים כעת מופיע ברשימת המסדים הזמינים:

  1. SHOW DATABASES;

המסד הנתונים blog_data צריך כעת להופיע בין המסדים הכלולים בפלט:

Output
+--------------------+ | Database | +--------------------+ | information_schema | | blog_data | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec)

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

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

  1. CREATE USER 'djangouser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

הודיעו למסד הנתונים ש־djangouser צריך לקבל גישה מלאה למסד הנתונים שהגדרתם:

  1. GRANT ALL ON blog_data.* TO 'djangouser'@'localhost';

עכשיו יש לכם מסד נתונים וחשבון משתמש, כל אחד נוצר במיוחד עבור Django. נפלוש את ההרשאות כך שהמופע הנוכחי של MySQL יודע על השינויים האחרונים שביצעתם:

  1. FLUSH PRIVILEGES;

עם זאת, ניתן לצאת משרת MySQL על ידי כתיבת EXIT; או לחיצה על CTRL + D.

שלב 2 — יצירת קובץ אפשרות MySQL

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

פתח את קובץ התצורה my.cnf עם עורך הטקסט המועדף עליך כדי לעדכן את פרטי החיבור שלך ל־MySQL. כאן נשתמש ב־nano:

  1. sudo nano /etc/mysql/my.cnf

הוסף את השורות הבאות וכלול את המידע הרלוונטי שלך:

/etc/mysql/my.cnf
…

[client]
database = blog_data
user = djangouser
password = your_actual_password
default-character-set = utf8

שים לב ש־utf8 מוגדר כקידוד ברירת המחדל. זהו דרך נפוצה לקידוד נתוני יוניקוד ב־MySQL. כאשר אתה בטוח שהפרטים שלך נכונים, שמור וסגור את הקובץ. אם השתמשת ב־nano כדי לערוך את הקובץ, תוכל לעשות זאת על ידי לחיצה על CTRL + O כדי לשמור את הקובץ ואז CTRL + X כדי לסגור את העורך.

לאחר שערכת את הקובץ, הפעל מחדש את MySQL כדי שהשינויים יכנסו לתוקף:

  1. sudo systemctl daemon-reload
  2. sudo systemctl restart mysql

שים לב שהפעלת מחדש של MySQL דורשת מספר שניות, אז נא להיות סבלני.

שלב 3 — יצירת תבנית הפרויקט הראשונית של Django

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

נווט אל הספרייה שבה תרצה לבנות את אפליקציית הבלוג שלך. בתוך הספרייה ההיא, צור ספרייה ספציפית לבניית האפליקציה. קרא לספרייה משהו שמשמעותי עבור האפליקציה שאתה בונה. כדוגמה, נקרא לה my_blog_app:

  1. mkdir my_blog_app

כעת, נווט אל הספרייה שנוצרה חדשה:

  1. cd my_blog_app

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

  1. python3 -m venv env

כאשר היא נוצרת, תוכל להפעיל אותה:

  1. . env/bin/activate

עכשיו התקן את Django בתוך הסביבה הזו אם עדיין לא עשית זאת:

  1. pip install django

תוך נמצאים בתיקיית my_blog_app, צור פרויקט על ידי הרצת הפקודה הבאה:

  1. django-admin startproject blog

וודא שהפעלה בוצעה על ידי ניווט לתיקיית blog/:

  1. cd blog

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

  1. ls

הפלט יציין את תיקיית ה-blog וקובץ manage.py:

Output
blog manage.py

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

שלב 4 — התקנת מחבר MySQL למסד נתונים

כדי להשתמש ב-MySQL בפרויקט שלך, תצטרך ספריית מחבר מסד נתונים Python 3 התואמת את Django. בשלב זה נדגים כיצד להתקין אחד מסוגי המחברים למסד נתונים כאלו, mysqlclient, אשר היא גרסה מופצת מחדש של MySQLdb.

ראשית, התקן את הכותרות והספריות הדרושות לפיתוח MySQL:

  1. sudo apt install libmysqlclient-dev default-libmysqlclient-dev

באשכול, השתמש ב־pip כדי להתקין את חבילת ה־wheel. Wheel היא פורמט אריזה המשמש ב-Python להתקנת מודולים מאינדקס חבילות Python. התקנת תוכניות Python מחבילות wheel בדרך כלל מהירה ויעילה יותר מהבניית חבילות מקורם. כדי להתקין ולעבוד עם תוכניות שאורזו כ-wheel, עליך לוודא שחבילת ה־wheel מותקנת:

  1. pip install wheel

לאחר מכן, המשך להתקנת mysqlclient:

  1. pip install mysqlclient

הפלט שלך יהיה דומה לפלט הבא, המאשר כי הלקוח הותקן בהצלחה:

Output
... Successfully installed mysqlclient-2.1.1

כעת התקנת בהצלחה את לקוח MySQL באמצעות ספריית מחבר PyPi mysqlclient.

שלב 5 — עריכת הגדרות

כאשר הפעלת את django-admin בעבר, נוצר קובץ הגדרות עבור Django בשם settings.py. עליך לשנות מספר מההגדרות המוגדרות כברירת מחדל בקובץ זה כדי לקבל פעולה תקינה.

כדי לערוך את הקובץ, פתח את הנתיב לקובץ בעזרת עורך הטקסט שלך:

  1. nano ~/my_blog_app/blog/blog/settings.py

כדי שהבלוג שלך יקבל את השעה הנכונה הקשורה לאזור שלך, תוכל לערוך את קובץ ה-settings.py כך שישתמש באזור הזמן הנוכחי שלך. תוכל להשתמש ברשימת אזורי הזמן הזו כאפשרות. לדוגמה שלנו, נשתמש באזור הזמן של America/New_York.

בתוך הקובץ, נווט לשדה TIME_ZONE בסעיף התחתון של הקובץ:

~/my_blog_app/blog/blog/settings.py
...

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True
...

שנה את השורה של TIME_ZONE, כך שתהיה מוגדרת לאזור הזמן הנוכחי שלך. בדוגמה שלנו, נשתמש באזור הזמן של ניו יורק:

~/my_blog_app/blog/blog/settings.py
...

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'America/New_York'

USE_I18N = True
...

שמור על פתוח את הקובץ משום שבשלב הבא עליך להוסיף נתיב לקבצי הסטטיים שלך. הקבצים שמוכנסים מהשרת של היישום האינטרנטי שלך ב-Django מתייחסים כ־קבצים סטטיים. זה יכול לכלול כל קבצים הנחוצים כדי להציג את הדף האינטרנטי השלם, כולל JavaScript, CSS ותמונות.

עבור אל סוף קובץ ה-settings.py והוסף STATIC_ROOT:

~/my_blog_app/blog/blog/settings.py
…

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
...

עכשיו שהוספת את אזור הזמן והנתיב לקבצים סטטיים, הוסף את כתובת ה-IP שלך לרשימת המארחים המורשים. נווט אל השורה בקובץ settings.py שבה כתוב ALLOWED_HOSTS, זה יהיה לעבר של קובץ settings.py. הוסף את כתובת ה-IP של השרת שלך, מוקף בגרשיים יחידות, בין הסוגריים המרובעים:

~/my_blog_app/blog/blog/settings.py
...
ALLOWED_HOSTS = ['your_server_IP_address']
...

הבא, הוסף את מודול ה-OS של פייתון שמספק פונקציות שונות לספריות. בלעדיו, תקבל שגיאה בעת הגדרת המשתמש המנהל להתחיל להשתמש בממשק ה-Django. כדי לעשות זאת, עליך לייבא את מודול ה-os שיעבוד במערכת ההפעלה שלך. הוסף את השורה import os מעל לשורה from pathlib import Path:

~/my_blog_app/blog/blog/settings.py
...
import os
from pathlib import Path
...

עד כה ערכת את קובץ ה-settings.py שלך כך שהאזור הזמן הנכון הוגדר. גם הוספת את הנתיב לקבצים הסטטיים שלך, הגדרת את כתובת ה-IP שלך כ-ALLOWED_HOST עבור היישום שלך, וייבאת את מודול ה-OS של פייתון כדי לעזור לך להגדיר משתמש מנהל מאוחר יותר.

הקטע האחרון שיש להוסיף לקובץ שלך הוא פרטי החיבור למסד נתונים כדי לחבר את היישום שלך לבלוג Django ל-MySQL. לשם כך, מצא את המילון DATABASES בתוך הקובץ. הוא ייראה כמו הבא בברירת מחדל:

~/my_blog_app/blog/blog/settings.py
…

DATABASES = {
	'default': {
    	'ENGINE': 'django.db.backends.sqlite3',
    	'NAME': BASE_DIR / 'db.sqlite3',
	}
}
...

החלף את אפשרויות ה-ENGINE וה-NAME של מילון ה-DATABASES בשורות הבאות:

~/my_blog_app/blog/blog/settings.py
...

DATABASES = {
	'default': {
    	'ENGINE': 'django.db.backends.mysql',
    	'OPTIONS': {
        	'read_default_file': '/etc/mysql/my.cnf',
    	},
	}
}
...

השורה 'ENGINE': 'django.db.backends.mysql' אומרת ל-Django להשתמש בגב הנתונים המובנה של MySQL. אפשרות read_default_file מצביעה על /etc/mysql/my.cnf, קובץ האפשרויות של MySQL שערכת לפני כן. זה מודיע ל-Django היכן למצוא את פרטי החיבור הרלוונטיים כדי להתחבר למסד הנתונים שיצרת בשלב 1.

שים לב ש-Django קורא את הגדרות חיבור למסד הנתונים לפי הסדר הבא:

  • OPTIONS
  • NAME, USER, PASSWORD, HOST, PORT
  • קבצי אפשרויות של MySQL

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

בנקודה זו, אתה יכול לשמור ולסגור את הקובץ.

הבא, בדוק שינויי המיגרציה על ידי הרצת הפקודה הבאה:

  1. python manage.py makemigrations

לאחר מכן, הרץ את migrate כדי לוודא שהשינויים ייחושבו:

  1. python manage.py migrate

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

  1. python manage.py createsuperuser

יתבקש ממך לספק שם משתמש, כתובת דוא"ל, וסיסמה למשתמש שלך.

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

שלב 6 — התאמת הגדרות הגנה בגיבוי

לפני בדיקת אפליקציית הווב Django שלך, עליך לוודא שהגדרות הגיבוי שלך הותאמו. התחל על ידי שינוי ההגדרות של ufw כך שיאפשרו גישה לפורט 8000:

  1. sudo ufw allow 8000

בדוק את המצב כדי לוודא שהגדרות הרשאה אלו עודכנו בהצלחה:

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 8000 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 8000 (v6) ALLOW Anywhere (v6)

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

שלב 7 — בדיקת חיבור MySQL לאפליקציה

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

נווט תחילה לתיקייה הבאה:

  1. cd ~/my_blog_app/blog/

משם, הפעל את הפקודה הבאה:

  1. python manage.py runserver your-server-ip:8000

תקבל פלט דומה לזה המופיע:

Output
Performing system checks... System check identified no issues (0 silenced). July 19, 2022 - 13:26:08 Django version 4.0.6, using settings 'blog.settings' Starting development server at http://your-server-ip:8000/ Quit the server with CONTROL-C.

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

עקוב אחר ההוראות מהפלט ועקוב אחר הקישור המוצע, http://your-server-ip:8000/, כדי לראות את יישום האינטרנט שלך ולוודא שהוא עובד כראוי.

אם הדף שלך נראה דומה לצילום המסך שמוצג למעלה, יישום ה-Django שלך פועל כצפוי.

כאשר אתה מסיים לבדוק את היישום שלך, לחץ על CTRL + C כדי לעצור את פקודת ההרצה של runserver. זה יחזיר אותך לסביבת התכנות שלך.

כאשר אתה מוכן לצאת מהסביבת ה-Python שלך, תוכל להפעיל את הפקודה deactivate:

  1. deactivate

ביטול הפעלת הסביבה שלך יחזיר אותך למוד הפקודה של הטרמינל.

מסקנה

במדריך זה, יצרת את היסוד הראשוני של הבלוג שלך ב-Django. התקנת, הגדרת, והתחברת ל-MySQL לצד האחורי של Django. כמו כן, הוספת פרטים חשובים לקובץ ה-settings.py של היישום שלך כגון TIME_ZONE, ALLOWED_HOSTS, import os, ופרטי מסד נתונים להתחברות היישום שלך ל-MySQL. כמו כן, כינית את הגדרות האש כדי לוודא שהבדיקה תעבור בצורה חלקה.

עכשיו שההגדרות הבסיסיות והתצורות הן שלמות, תוכל להתחיל לפתח מודלים ולהחיל העברות ביישום ה-Django שלך.

Source:
https://www.digitalocean.com/community/tutorials/how-to-create-a-django-app-and-connect-it-to-a-database