Давайте узнаем, как выставить демонстрационное приложение Django в Интернет. То есть без размещения на хостинге.
Настраивать среду развертывания только для демонстрации вашего приложения Django ужасно. Более того, если вам нужен URL-адрес всего на несколько минут, чтобы показать его клиенту или товарищу по команде.
Лучший вариант — использовать инструмент для обнаружения вашего текущего локального сервера. Именно так! Люди со всего мира смогут видеть, что происходит на вашем локальном хосте.
Для этого воспользуемся Ngrok. Этот инструмент позволит нам создавать общедоступные URL-адреса на основе локальных портов наших компьютеров. Все это благодаря магии Туннелей.
Прежде чем начать, весь код, который работал над этим руководством, будет доступен в этом репозитории Github.
Содержание
Предпосылки
Рекомендуется знать все эти основные вещи. Хотя вы, вероятно, можете следовать этому руководству без дальнейших проблем.
Создание приложения Django
Чтобы сделать пошаговое руководство, я объясню процесс создания проекта Django. Если он у вас уже есть, вы можете пропустить этот раздел.
Виртуальная среда
Прежде всего, давайте создадим виртуальную среду 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
Платформа
Оболочка
Команда для активации виртуальной среды
POSIX
баш/зш
$ источник /bin/активировать
рыба
$ источник /bin/activate.fish
csh/tcsh
$ источник /bin/activate.csh
Ядро PowerShell
$ /bin/Activate.ps1
Окна
cmd.эке
C:> Скриптыактивировать.bat
PowerShell
PS C:> ScriptsActivate.ps1
Теперь, если вы выполнили правильную команду, в вашей оболочке должно быть имя виртуальной среды.
$ source .venv/bin/activate.fish (.venv) $
Установить Джанго
После активации виртуальной среды вы можете установить любую версию 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=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 с именем mitetestingproject. После создания мы хотим, чтобы вы вошли в каталог, где находится структура проекта. Итак, давайте перейдем к нему и запустим сервер 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-адрес, предоставленный Ngrok, в свой браузер.
Изменение настроек.pi
Вау, что только что произошло ??
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, нам нужно добавить домен, к которому мы подключаемся, в конфигурационную переменную ALLOVED_HOSTS. Но у нас есть проблема: доменное имя слишком большое и запутанное.
Итак, давайте изменим некоторые настройки Django, чтобы устранить эту ошибку. Откройте файл settings.pi, расположенный в папке проекта.
# mytestingproject/settings.py # Line 28 # Change from ALLOWED_HOSTS = [] # To ALLOWED_HOSTS = ["*"]
Если вы знаете какое-то регулярное выражение, вы можете оценить, что мы установили подстановочный знак, где будут разрешены все хосты.
Теперь перезагрузите сайт и посмотрите результат.
Теперь все работает идеально! И если вы начнете создавать приложения для проекта и настраивать URL-адреса и представления, все будет отражено в этом общедоступном URL-адресе.
Примечание. Не забудьте изменить ALLOVED_HOSTS в рабочей среде, так как это создаст огромную дыру в безопасности.
Выводы
В этом руководстве вы узнали, как создать демонстрационный URL-адрес для вашего проекта Django без необходимости его развертывания.
Вы научились запускать проект Django и работать с файлом settings.pi в Django.
Наконец, вы узнали, как использовать Ngrok и как открыть с его помощью любой локальный сервер.
Затем изучите некоторые популярные фреймворки Python для создания API.