Як виставити демонстраційну програму Django в Інтернет за допомогою Ngrok?

Давайте дізнаємося, як виставити демонстраційну програму 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.
  Як тимчасово вимкнути сповіщення в Firefox

Платформа
оболонка
Команда для активації віртуального середовища
POSIX
bash/zsh
$ джерело /bin/activate

риба
$ джерело /bin/activate.fish

csh/tcsh
$ джерело /bin/activate.csh

Ядро PowerShell
$ /bin/Activate.ps1
вікна
cmd.exe
C:> Scriptsactivate.bat

PowerShell
PS C:> ScriptsActivate.ps1

Тепер, якщо ви виконали правильну команду, у вашій оболонці має бути назва віртуального середовища.

$ 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.

  Як перенести контакти, журнал викликів і повідомлення з одного телефону на інший за допомогою MobileTrans

Не переживайте про повідомлення про помилку. Спочатку давайте перевіримо, чи все добре працює на нашому локальному сервері. Для цього перейдіть у веб-переглядач і вставте цей напрямок:

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.