Давайте дізнаємося, як виставити демонстраційну програму Django в Інтернеті. Це без розгортання в службі хостингу.
Налаштовувати проміжне середовище розгортання лише для демонстрації вашої програми Django — це жахливо. Навіть більше, якщо вам потрібна URL-адреса лише на пару хвилин, щоб показати її клієнту чи товаришу по команді.
Найкращим варіантом є використання інструменту для розкриття поточного локального сервера. точно! Люди в усьому світі зможуть бачити, що відбувається на вашому локальному хості.
Для цього ми будемо використовувати Нгрок. Цей інструмент дозволить нам створювати публічні URL-адреси на основі локальних портів наших комп’ютерів. Все це завдяки магії Тунелі.
Перед початком роботи весь код, який працював у цьому посібнику, буде доступний у цьому Репозиторій Github.
Попередні вимоги
Рекомендується знати всі ці основні речі. Хоча цілком ймовірно, що ви зможете дотримуватися цього підручника без подальших проблем.
Створення програми Django
Щоб створити покроковий посібник, я поясню процес створення проекту Django. Якщо у вас уже є, ви можете пропустити цей розділ.
Віртуальне середовище
Перш за все, давайте створимо a Віртуальне середовище Python.
- Тож відкрийте системний термінал (або оболонку).
- Якщо вам здається занадто складним відкрити системний термінал, спробуйте скористатися вбудованим терміналом редактора коду.
- Натисніть Термінал>Новий термінал, і внизу екрана має з’явитися оболонка.
- Введіть таку команду, щоб створити віртуальне середовище за допомогою вбудованого інструменту Python.
python -m venv .venv
Це в основному означає:
Привіт, Python, створи команду віртуального середовища (-m venv) із назвою .venv
- Тепер, якщо ви перерахуєте файли вашого поточного каталогу, ви побачите папку .venv.
$ ls -l drwxr-xr-x - daniel 30 abr 23:12 .venv # Other files ...
- Щоб активувати віртуальне середовище, ми викликаємо команду source.
source .venv/bin/activate
- Якщо ви виявите будь-яку проблему, зверніться до наведеної нижче таблиці, отриманої від офіційної особи документація python.
Платформа
оболонка
Команда для активації віртуального середовища
POSIX
bash/zsh
$ джерело
риба
$ джерело
csh/tcsh
$ джерело
Ядро PowerShell
$
вікна
cmd.exe
C:>
PowerShell
PS C:>
Тепер, якщо ви виконали правильну команду, у вашій оболонці має бути назва віртуального середовища.
$ source .venv/bin/activate.fish (.venv) $
Встановіть Django
Після активації вашого віртуального середовища тепер ви можете встановити будь-яку версію Django. У цьому випадку гарним вибором буде встановити останню версію.
$ pip install django Collecting django Using cached Django-3.2-py3-none-any.whl (7.9 MB) Collecting pytz Using cached pytz-2021.1-py2.py3-none-any.whl (510 kB) Collecting asgiref<4,>=3.3.2 Using cached asgiref-3.3.4-py3-none-any.whl (22 kB) Collecting sqlparse>=0.2.2 Using cached sqlparse-0.4.1-py3-none-any.whl (42 kB) Installing collected packages: pytz, asgiref, sqlparse, django Successfully installed asgiref-3.3.4 django-3.2 pytz-2021.1 sqlparse-0.4.1
Тепер настав час створити основну структуру проекту програми Django, яку ви хочете представити.
$ django-admin startproject mytestingproject
Це створить проект Django з назвою mytestingproject. Ми хочемо, щоб після його створення ви захотіли увійти до каталогу, де розташована структура проекту. Тож давайте перейдемо до нього та запустимо сервер Django.
# Enter to the project directory (.venv)$ cd mytestingproject/ # Listing the files inside the project (.venv) $ ls mytestingproject manage.py
Тепер, коли ви зайшли, давайте запустимо сервер Django, щоб побачити, як він виглядає.
(.venv) $python manage.py runserver Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). You have 18 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. May 01, 2021 - 04:34:25 Django version 3.2, using settings 'mytestingproject.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
По суті, Django повідомляє нам, що локальний сервер працює на нашому локальному хості (127.0.0.1 завжди вказує на нього), на стандартному порту 8000.
Не переживайте про повідомлення про помилку. Спочатку давайте перевіримо, чи все добре працює на нашому локальному сервері. Для цього перейдіть у веб-переглядач і вставте цей напрямок:
http://localhost:8000/ # Do you note that localhost and 127.0.0.1 are the same?
Якщо все працює нормально, ви повинні побачити красивий шаблон Django.
Ось і все про нашу установку Django.
Тепер давайте розкриємо цей проект Django. Якщо ви працюєте над складнішим проектом, наступні методи розкриття програм Django також будуть працювати.
Розкриття програми Django за допомогою Ngrok
Як я вже говорив раніше, Ngrok є одним із інструментів, який дозволить нам розмістити наш локальний сервер в Інтернеті. Отже, перш за все Завантажити Ngrok з офіційного сайту.
Після того, як ви його встановили, давайте продовжимо виконання необхідних команд.
Відкрийте іншу оболонку, зберігаючи термінал, який зараз працює на вашому сервері Django, і введіть.
$ ngrok help NAME: ngrok - tunnel local ports to public URLs and inspect traffic More commands ....
Це дасть вам швидкий огляд доступних команд, які пропонує Ngrok, а також переконається, що процес встановлення пройшов правильно.
Щоб створити URL-адресу, за якою люди зможуть отримати доступ до нашого сервера, давайте запустимо.
$ ngrok http 8000
# secure public URL for port 8000 web server
Ми запускаємо аргумент http, щоб створити URL-адресу, яка підключатиметься до порту 8000 нашого локального хосту.
Ось який результат ви, ймовірно, отримаєте.
ngrok by @inconshreveable (Ctrl+C to quit) Session Status online Session Expires 1 hour, 59 minutes Update update available (version 2.3.39, Ctrl-U to update) Version 2.3.35 Region United States (us) Web Interface http://127.0.0.1:4040 Forwarding http://cac2165aa7f8.ngrok.io -> http://localhost:8000 Forwarding https://cac2165aa7f8.ngrok.io -> http://localhost:8000 Connections ttl opn rt1 rt5 p50 p90 0 0 0.00 0.00 0.00 0.00
Як сказано, Ngrok пересилає цю дивну та потворну URL-адресу на наш локальний хост. Але диво відбувається, коли ви відкриваєте браузер із URL-адресою, яку вам надав Нгрок.
Зміна settings.py
Вау, що щойно сталося 😱?
Схоже, Django видає помилку через налаштування DisallowedHost. Якщо ви перевірите оболонку, у якій запущено сервер Django, і ту, що має сеанс Ngrok, ви отримаєте кілька повідомлень про налагодження.
# Django messages Invalid HTTP_HOST header: 'cac2165aa7f8.ngrok.io'. You may need to add 'cac2165aa7f8.ngrok.io' to ALLOWED_HOSTS. Bad Request: / [01/May/2021 05:07:46] "GET / HTTP/1.1" 400 65196 Invalid HTTP_HOST header: 'cac2165aa7f8.ngrok.io'. You may need to add 'cac2165aa7f8.ngrok.io' to ALLOWED_HOSTS. # Ngrok messages HTTP Requests ------------- GET /favicon.ico 400 Bad Request GET / 400 Bad Request
Як повідомляє нам Django, ми повинні додати домен, який підключаємо, до змінної конфігурації ALLOWED_HOSTS. Але у нас є проблема, і вона полягає в тому, що доменне ім’я занадто велике та заплутане.
Отже, давайте трохи змінимо налаштування Django, щоб вирішити цю помилку. Відкрийте файл settings.py, який знаходиться в папці проекту.
# mytestingproject/settings.py # Line 28 # Change from ALLOWED_HOSTS = [] # To ALLOWED_HOSTS = ["*"]
Якщо ви знаєте якийсь регулярний вираз, ви можете оцінити, що ми встановлюємо шаблон підстановки, де будуть дозволені всі хости.
Тепер перезавантажте сайт і подивіться на результат.
Зараз все працює ідеально! І якщо ви почнете створювати програми для проекту та встановлювати URL-адреси та перегляди, все це буде відображено на цій публічній URL-адресі.
Примітка: не забудьте змінити ALLOWED_HOSTS у виробництві, оскільки це призведе до величезної діри в безпеці.
Висновки
У цьому посібнику ви дізналися, як створити демонстраційну URL-адресу для свого проекту Django без необхідності його розгортання.
Ви потренувалися, як запустити проект Django та працювати з файлом settings.py у Django.
Нарешті ви дізналися, як використовувати Ngrok і як за допомогою нього відкрити будь-який локальний сервер.
Далі ознайомтеся з деякими популярними фреймворками Python для створення API.