ايجاد يك برنامه Django و اتصال آن به يك بانك اطلاعاتي
به خاطر چارچوب وب آزاد و منبع باز كه در پايتون نوشته شده است ، Django امكان مقياس پذيري ، قابليت استفاده مجدد و توسعه سريع را فراهم مي آورد.
در اين آموزش مي بينيد كه چگونه پايه و اساس اوليه يك سايت وبلاگي با اتصال به يك پايگاه داده MySQL را تنظيم كنيد. اين امر شامل ايجاد ساختار اسكلت برنامه وبلاگ با استفاده از django-admin ، ايجاد بانك اطلاعاتي MySQL و سپس اتصال برنامه وب به ديتابيس خواهد بود.
توجه داشته باشيد كه اين امر محيط توسعه را براي شما فراهم مي كند تا بتوانيد در برنامه وبلاگ خود كار كنيد ، اما شما بايد قبل از اينكه وبلاگ خود را به صورت زنده در اينترنت قرار دهيد ، كارهاي ديگري انجام دهيد ، نام هاي دامنه را تعيين و لايه هاي امنيتي بيشتري اضافه كنيد.
پيش نيازها
بايد يك محيط Python در سرور مجازي خود تنظيم كنيد. در اين آموزش ، ما از سرور مجازي اوبونتو 20.04 استفاده خواهيم كرد ، اما از آنجا كه تمركز اين آموزش بر روي Django است ، اين اصول بايد براي ساير سيستم عامل ها نيز كاربرد داشته باشد.
براي راه اندازي پايتون ، آموزش نحوه نصب پايتون 3 و تنظيم يك محيط برنامه نويسي را در سرور مجازي اوبونتو 20.04 دنبال كنيد.
با قرارگيري پايتون در جاي خود ، مي توانيم به سراغ ايجاد برنامه خود برويم.
مرحله 1 – MySQL را نصب كنيد
ما از MySQL به عنوان بانك اطلاعاتي خود استفاده خواهيم كرد. ممكن است شما بخواهيد از بانك اطلاعاتي ديگري استفاده كنيد يا از قبل يك پايگاه داده نصب كرده باشيد ، در اين صورت بايد اين مرحله را رد كنيد.
براي نصب MySQL در سرور مجازي Ubuntu 20.04 ، دستور زير را تايپ كنيد:
⦁ $ sudo apt install mysql-server
⦁
بايد خروجي زير را دريافت كنيد:
Output
● mysql.service – MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-05-07 20:22:51 UTC; 3min 7s ago
Main PID: 2052 (mysqld)
Status: “Server is operational”
Tasks: 38 (limit: 1137)
Memory: 317.4M
CGroup: /system.slice/mysql.service
└─2052 /usr/sbin/mysqld
اطمينان حاصل كنيد كه بازخورد دريافتي بيانگر فعال بودن سرور مجازي MySQL شماست. پس از تاييد اين موضوع ، مي توانيد اين آموزش را ادامه دهيد.
مرحله 2 – اسكلت اوليه پروژه Django را ايجاد كنيد
به منظور ايجاد زمينه كاري براي برنامه خود ، بايد اسكلت پروژه را با استفاده از دستور django-admin توليد كنيم. اين پروژه توليد شده پايه و اساس برنامه وبلاگ ما خواهد بود.
به دايركتوري برويد كه مي خواهيد برنامه وبلاگ خود را بسازيد. در اين ديركتوري ، يك ديركتوري خاص براي ساخت برنامه ايجاد خواهيم كرد. براي برنامه اي كه در حال ساخت هستيد ، نام ديركتوري را چيزي معني دار در نظر بگيريد. به عنوان نمونه ، ما آن را my_blog_app مي ناميم.
⦁ $ mkdir my_blog_app
⦁
اكنون به پوشه تازه ايجاد شده برويد:
⦁ $ cd my_blog_app
⦁
در مرحله بعد ، وارد محيط برنامه نويسي شويد كه مي خواهيد براي كار در Django استفاده كنيد. مي توانيد از يك ديركتوري موجود استفاده كنيد يا يك ديركتوري جديد ايجاد كنيد. ما ديركتوري خود را env مي ناميم ، اما شما بايد از اسمي استفاده كنيد كه براي شما معني دارد. پس از ايجاد ، مي توانيد آن را فعال كنيد.
⦁ $ python3 -m venv env
⦁
⦁ . env/bin/activate
اگر قبلا Django را نصب نكرده ايد ، آن را در اين محيط نصب كنيد:
⦁ (env) Sammy@ubuntu:$ pip install django
⦁
در حالي كه در ديركتوري my_blog_app هستيم، با اجراي دستور زير ، پروژه اي را توليد مي كنيم:
⦁ (env) Sammy@ubuntu:$ django-admin startproject blog
⦁
با رفتن به دايركتوري blog/ تأييد كنيد كه كار كرده است:
⦁ (env) Sammy@ubuntu:$ cd blog
⦁
دايركتوريblog/ بايد پس از اجراي دستور قبلي django-admin در دايركتوري فعلي ، ~ / my_blog_app / ايجاد شود.
براي تأييد اينكه موارد لازم ايجاد شده است ، ls را اجرا كنيد. بايد يك ديركتوري وبلاگ و يك فايل management.py وجود داشته باشد:
Output
blog manage.py
اكنون كه دايركتوري پروژه را ايجاد كرده ايد كه شامل شروع اوليه برنامه وبلاگ شماست ، مي توانيم به مرحله بعدي برويم.
مرحله 3 – تنظيمات را ويرايش كنيد
از آنجا كه ما پروژه اسكلت را توليد كرده ايم ، اكنون يك فايل settings.py داريم.
براي اينكه وبلاگ ما زمان صحيحي با ناحيه ما ارتباط داشته باشد ، فايل settings.py را ويرايش مي كنيم تا از منطقه زماني فعلي شما استفاده كند. مي توانيد از اين ليست مناطق زماني به عنوان مرجع استفاده كنيد. به عنوان مثال ، ما از وقت America/New_York استفاده خواهيم كرد.
مي خواهيم فايل را ويرايش كنيم ، بنابراين بياييد مسير فايل را با ويرايشگر متن مورد نظر خود باز كنيم. در اينجا ، ما از nano استفاده خواهيم كرد.
⦁ (env) Sammy@ubuntu:$ nano ~/my_blog_app/blog/blog/settings.py
⦁
از آنجا كه ما در حال ويرايش قسمت TIME_ZONE هستيم ، مانند زير به قسمت پايين فايل خواهيم رفت.
settings.py
…
# Internationalization
# https://docs.djangoproject.com/en/2.0/topics/i18n/
LANGUAGE_CODE = ‘en-us’
TIME_ZONE = ‘UTC’
USE_I18N = True
USE_L10N = True
USE_TZ = True
…
ما مي خواهيم خط TIME_ZONE را طوري تغيير دهيم كه در منطقه زماني فعلي شما تنظيم شود. در اين مثال از منطقه زماني نيويورك استفاده خواهيم كرد:
settings.py
…
# Internationalization
# https://docs.djangoproject.com/en/2.0/topics/i18n/
LANGUAGE_CODE = ‘en-us’
TIME_ZONE = ‘America/New_York’
USE_I18N = True
…
بياييد فايل را باز نگه داريم زيرا بايد مسيري را براي فايل هاي استاتيك خود اضافه كنيم. فايلهايي كه از برنامه وب Django شما دريافت مي شوند به فايل هاي استاتيك شناخته مي شوند. اين فايل ها مي تواند شامل تمام فايل هاي لازم براي ارائه كامل صفحه وب از جمله JavaScript ، CSS و تصاوير باشد.
به انتهاي فايل تنظيمات برويد و مطابق شكل زير STATIC_ROOT را اضافه كنيد:
settings.py
…
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.0/howto/static-files/
STATIC_URL = ‘/static/’
STATIC_ROOT = os.path.join(BASE_DIR, ‘static’)
اكنون كه منطقه زماني و مسير فايل هاي استاتيك را اضافه كرده ايم ، بايد IP بعدي خود را به ليست هاست هاي مجاز اضافه كنيم. به خط فايل settings.pyبرويد. جايي كه ALLOWED_HOSTS نوشته شده، در قسمت بالاي فايل settings.py خواهد بود.
settings.py
…
# SECURITY WARNING: don’t run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = [‘your server IP address’]
# Application definition
…
آدرس IP سرور مجازي خود را بين براكت و علامت تك نقل قول اضافه كنيد.
پس از رضايت از تغييراتي كه ايجاد كرده ايد ، فايل را ذخيره كنيد. اگر در حال استفاده از nano هستيد ، مي توانيد اين كار را با فشار دادن CTRL + X و سپس y براي تأييد تغييرات انجام دهيد.
شما فايل settings.pyخود را با موفقيت ويرايش كرده ايد تا منطقه زماني مناسب پيكربندي شده باشد. همچنين مسير فايل هاي استاتيك خود را اضافه كرده ايد و آدرس IP را براي برنامه خود ALLOWED_HOST قرار داده ايد.
در آخر ، اجازه دهيد يك كاربر ادمين ايجاد كنيم تا بتوانيد از رابط مدير Djano استفاده كنيد. بياييد اين كار را با دستور Creatuperuser انجام دهيم:
⦁ (me_env) $ python manage.py createsuperuser
⦁
از شما يك نام كاربري ، يك آدرس ايميل و رمز عبور براي كاربر خواسته مي شود.
در اين مرحله مي توانيم به تنظيم اتصال بانك اطلاعاتي خود بپردازيم.
مرحله 4 – اتصال دهنده پايگاه داده MySQL را نصب كنيد
براي استفاده از MySQL با پروژه خود ، به يك كتابخانه اتصال دهنده پايگاه داده Python 3 كه سازگار با Django است ، نياز خواهيم داشت. بنابراين ، ما اتصال ديتابيس را نصب خواهيم كرد ، mysqlclient ، كه يك نسخه forked از MySQLdb است.
ابتدا اطمينان حاصل كنيد كه python3-dev را نصب كرده ايد. با اجراي دستور زير مي توانيد python3-dev را نصب كنيد:
⦁ (env) Sammy@ubuntu:$ sudo apt install python3-dev
⦁
اكنون مي توانيم هدرها و كتابخانه هاي توسعه Python و MySQL را نصب كنيم:
⦁ (env) Sammy@ubuntu:$ sudo apt install python3-dev libmysqlclient-dev default-libmysqlclient-dev
⦁
براي پذيرش نصب ، y و ENTER را فشار دهيد.
پس از اتمام نصب ، از pip3 براي نصب كتابخانه mysqlclient از PyPi استفاده خواهيم كرد. از آنجا كه نسخه pip به pip3 اشاره مي كند ، مي توانيم از pip استفاده كنيم.
⦁ (env) Sammy@ubuntu:$ pip install mysqlclient
⦁
خروجي مشابه اين را دريافت خواهيد كرد ، تأييد ميكند كه به درستي در حال نصب است:
successfully installed mysqlclient
…
Successfully installed mysqlclient-1.4.6
اكنون با استفاده از كتابخانه اتصال دهنده mysqlclient PyPi با موفقيت MySQL را نصب كرديم.
مرحله 5 – ايجاد بانك اطلاعاتي
اكنون كه اسكلت برنامه Django شما راه اندازي شده است و mysqlclient و mysql-server نصب شده اند ، بايد براي سازگاري MySQL ، backend Django را پيكربندي كنيم.
به صورت ريشه MySQL با دستور زير وارد شويد:
⦁ (env) Sammy@ubuntu:$ sudo mysql -u root
⦁
وقتي اعلان تغيير مي كند مي دانيم كه در سرور مجازي MySQL قرار داريم:
Mysql>
بگذاريد پايگاه داده هاي فعلي را با دستور زير بررسي كنيم:
⦁ Mysql> SHOW DATABASES;
⦁
با فرض اينكه هنوز هيچ پايگاه داده اي ايجاد نكرده ايد ، خروجي مشابه زير را مشاهده خواهيد كرد:
Output
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| performance_schema |
| sys |
+——————–+
4 rows in set (0.00 sec)
توجه: اگر هنگام تلاش براي اتصال با خطايي مواجه شديد ، تأييد كنيد كه رمزعبورتان درست است و MySQL را به درستي نصب كرده ايد. در غير اينصورت آموزش نحوه نصب و پيكربندي MySQL را دوباره مرور كنيد.
به طور پيش فرض ، شما 4 پايگاه داده را تاكنون ايجاد كرده ايد ، data_schema ، MySQL ، performance_schema و sys. نيازي به اتصال به اين موارد نداريم ، زيرا حاوي اطلاعاتي مهم براي خود سرور مجازي MySQL هستند.
اكنون ، كه با موفقيت به سرور مجازي MySQL خود وارد شده ايد ، بانك اطلاعاتي اوليه را ايجاد مي كنيم كه داده ها را براي وبلاگ مان نگه مي دارد.
براي ايجاد يك پايگاه داده در MySQL ، دستور زير را با استفاده از يك اسم معني دار براي پايگاه داده خود اجرا كنيد:
⦁ Mysql> CREATE DATABASE blog_data;
⦁
پس از ايجاد موفقيت آميز پايگاه داده ، خروجي زير را مشاهده خواهيد كرد:
Output
Query OK, 1 row affected (0.00 sec)
توجه: اگر خروجي زير را مشاهده مي كنيد:
database creation failed
ERROR 1007 (HY000): Can’t create database blog_data; database exists
يعني ، همانطور كه خطا بيان مي كند ، يك بانك اطلاعاتي با نام blog_data از قبل وجود دارد.
و اگر خطاي MySQL زير را مشاهده كرديد ، به اين معني است كه يك خطاي نحوي MySQL وجود دارد. بررسي كنيد كه فرمان را دقيقاً مطابق با اين آموزش وارد كرده ايد.
database creation failed
ERROR 1064 (42000): You have an error in your SQL syntax;
سپس ، تأييد كنيد كه اكنون پايگاه داده در ليست پايگاههاي داده موجود شما قرار دارد:
⦁ $ SHOW DATABASES;
⦁
بايد ببينيد كه پايگاه داده blog_data در ميان پايگاه داده هاي موجود در خروجي است:
output
+——————–+
| Database |
+——————–+
| information_schema |
| blog_data |
| mysql |
| performance_schema |
| sys |
+——————–+
5 rows in set (0.00 sec)
در مرحله بعد ، قصد داريم يك حساب كاربري MySQL جداگانه ايجاد كنيم كه ما بطور انحصاري براي كار با بانك اطلاعات جديد خود استفاده خواهيم كرد. ايجاد بانكهاي اطلاعاتي و حسابهاي خاص مي تواند ما را از منظر مديريتي و امنيتي پشتيباني كند. ما در اين راهنما از نام djangouser استفاده خواهيم كرد ، اما شما ميتوانيد از هر نامي استفاده كنيد.
ما قصد داريم اين حساب را ايجاد كنيم ، رمزعبور راتنظيم كنيم و به ديتابيس ايجاد شده دسترسي پيدا كنيم. مي توانيم با تايپ دستور زير اين كار را انجام دهيم. به ياد داشته باشيد يك رمزعبور قوي براي كاربر پايگاه داده خود در جايي كه password را داريم انتخاب كنيد:
⦁ Mysql> CREATE USER ‘djangouser’@’%’ IDENTIFIED WITH mysql_native_password BY ‘password’;
⦁
در مرحله بعد ، به ديتابيس اطلاع دهيد كه djangouser ما بايد دسترسي كامل به ديتابيسي كه ايجاد ميكنيم داشته باشد:
⦁ Mysql> GRANT ALL ON blog_data.* TO ‘djangouser’@’%’;
⦁
اكنون يك بانك اطلاعاتي و يك حساب كاربري داريد كه هركدام به طور خاص براي Django ساخته شده است. بايد امتيازات را flush كنيم تا نمونه فعلي MySQL از تغييرات اخير ما اطلاع يابد:
⦁ Mysql> FLUSH PRIVILEGES;
⦁
با اتمام آن ، مي توانيد با وارد كردن EXIT يا با فشار دادن CTRL + D از سرور مجازي MySQL خارج شويد.
مرحله 6 – اتصال پايگاه داده MySQL را به برنامه خود اضافه كنيد
سرانجام ، اعتبارات اتصال بانك اطلاعاتي را به برنامه Django شما اضافه خواهيم كرد.
توجه: لازم است به ياد داشته باشيد كه تنظيمات اتصال ، مطابق مستندات Django ، به ترتيب زير استفاده مي شوند:
OPTIONS
– NAME, USER, PASSWORD, HOST, PORT
– MySQL option files.
بياييد تغييرات لازم را براي اتصال برنامه وبلاگ Django به MySQL ايجاد كنيم.
به فايل settings.py برويد و خطوط فعلي DATABASES را با موارد زير جايگزين كنيد. ما ديكشنري پايگاه داده شما را پيكربندي خواهيم كرد تا بداند كه از MySQL به عنوان backend ديتابيس شما استفاده كند و از چه فايلي براي خواندن اعتبارات اتصال بانك اطلاعاتي شما استفاده كند.
⦁ (env) Sammy@ubuntu:$ nano ~/my_blog_app/blog/blog/settings.py
⦁
خطوط موجود را در آنجا پاك كرده و آن را با خطوط زير جايگزين كنيد ، حتماً تعداد مناسب پرانتز را حفظ كنيد.
settings.py
…
# Database
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases
DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.mysql’,
‘OPTIONS’: {
‘read_default_file’: ‘/etc/mysql/my.cnf’,
},
}
}
…
فايل را ذخيره كنيد و ببنديد.
سپس ، اجازه دهيد فايل پيكربندي را ويرايش كنيم تا اعتبارات MySQL شما را داشته باشد. براي ويرايش فايل و افزودن اطلاعات زير از nano به عنوان sudo استفاده كنيد:
⦁ (env) Sammy@ubuntu:$ sudo nano /etc/mysql/my.cnf
⦁
خطوط زير را اضافه كنيد و اطلاعات مربوط به خود را درج كنيد.
my.cnf
…
[client]
database = blog_data
user = djangouser
password = your_actual_password
default-character-set = utf8
توجه خواهيد كرد كه utf8 به عنوان رمزگذاري پيش فرض تنظيم شده است ، كه يك روش معمول براي رمزگذاري داده هاي تك كد در MySQL است. وقتي مطمئن شديد كه جزئيات شما صحيح است ، فايل را ذخيره كنيد و ببنديد.
پس از ويرايش فايل ، لازم است كه MySQL را مجدداً راه اندازي كنيم تا تغييرات به مرحله اجرا درآيند.
⦁ (env) Sammy@ubuntu:$ sudo systemctl daemon-reload
⦁
⦁ (env) Sammy@ubuntu:$ sudo systemctl restart mysql
لطفاً توجه داشته باشيد كه راه اندازي مجدد MySQL چند ثانيه طول مي كشد ، بنابراين لطفاً صبور باشيد.
مرحله 7 – اتصال MySQL به برنامه را آزمايش كنيد
لازم است تأييد كنيم كه تنظيمات موجود در Django سرور مجازي MySQL را به درستي تشخيص مي دهد. ما مي توانيم اين كار را با اجراي سرور مجازي انجام دهيم. در صورت عدم موفقيت ، اين بدان معني است كه اتصال به درستي كار نمي كند. در غير اين صورت ، اتصال معتبر است.
بياييد ابتدا تغييرات خود را در django با دستور زير اعمال كنيم:
⦁ (env) Sammy@ubuntu:$ python manage.py migrate
⦁
بايد به ديركتوري زير برويم:
⦁ (env) Sammy@ubuntu:$ cd ~/my_blog_app/blog/
⦁
از آنجا ، مي توانيم دستور زير را اجرا كنيم:
⦁ (env) Sammy@ubuntu:$ python manage.py runserver your-server-ip:8000
⦁
اكنون خروجي مشابه زير را مشاهده خواهيد كرد:
Output
Performing system checks…
System check identified no issues (0 silenced).
You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run ‘python manage.py migrate’ to apply them.
January 4, 2018 – 15:45:39
Django version 2.0.1, 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 را فشار دهيد تا دستور Runnerver متوقف شود. با اين كار شما به محيط برنامه نويسي خود باز خواهيد گشت.
هنگامي كه آماده ترك محيط Python خود هستيد ، مي توانيد دستور غيرفعال كردن را اجرا كنيد:
⦁ (env) Sammy@ubuntu:$ deactivate
⦁
غيرفعال كردن محيط برنامه نويسي شما را به سمت فرمان نهايي ترمينال باز مي گرداند.
نتيجه
در اين آموزش پايه و اساس اوليه وبلاگ Django خود را ايجاد كرده ايد. MySQL را نصب و پيكربندي كرده و به backend Django وصل كرده ايد. همچنين برخي از اطلاعات مهم مانند TIME_ZONE و ALLOWED_HOSTS را به فايل تنظيمات برنامه خود اضافه كرده ايد.
اكنون كه اين تنظيمات و پيكربندي هاي اوليه كامل شده است ، مي توانيد شروع به توسعه مدل ها و اعمال برنامه هاي جابه جايي در برنامه Django خود كنيد.
خريد vps – خريد سرور مجازي – خريد سرور – سرور هلند – فروش vps – سرور مجازي آمريكا – خريدvps – سرور مجازي هلند – فروش سرور مجازي – سرور آمريكا – vps – سرور مجازي انگليس – سرور مجازي آلمان – سرور مجازي كانادا – خريد vps آمريكا – خريد وي پي اس – سرور – خريد سرور مجازي هلند – vps خريد – سرور مجازي فرانسه – سرور مجازي هلند – خريد vps آمريكا – خريد سرور مجازي ارزان هلند – vps – خريد vps هلند – خريد سرور مجازي آمريكا – خريد vps فرانسه – تست vps – سرور مجازي تست – سرور مجازي ويندوز – ارزانترين vps – خريد وي پي اس – vps ارزان –
برچسب: ،