Како изложити Дјанго демо апликацију Интернету са Нгроком?

Хајде да научимо како да изложимо Дјанго демо апликацију на Интернет. То, без постављања у услугу хостинга.

Ужасно је конфигурисање окружења за примену само да би се приказао демо ваше Дјанго апликације. Штавише, ако вам је потребан УРЛ само на неколико минута, да бисте га приказали клијенту или саиграчу.

Најбоља опција је да користите алатку за откривање вашег тренутног локалног сервера. Баш тако! Људи широм света ће моћи да виде шта се дешава на вашем локалном хосту.

У ту сврху користићемо Нгрок. Овај алат ће нам омогућити да креирамо јавне УРЛ адресе на основу локалних портова наших рачунара. Све ово захваљујући магији Тунели.

Пре почетка, сав код који је радио на овом туторијалу, биће доступан у овом Гитхуб спремиште.

Предуслови

Препоручљиво је знати све ове основне ствари. Иако је вероватно да можете да пратите овај водич, без даљих проблема.

Креирање Дјанго апликације

Да бих направио туторијал корак по корак, објаснићу процес креирања Дјанго пројекта. Ако га већ имате, можете прескочити овај одељак.

Виртуелно окружење

Пре свега, хајде да направимо а Питхон виртуелно окружење.

  • Дакле, отворите свој системски терминал (или љуску).
  • Ако сматрате да је сувише компликовано да отворите системски терминал, покушајте да користите уграђени терминал уређивача кода.
  • Кликните на Терминал>Нови терминал и љуска би се требала појавити на дну вашег екрана.
  • Откуцајте следећу команду да бисте креирали виртуелно окружење, са уграђеним Питхон алатом.
python -m venv .venv

То у основи значи:

Хеј Питхон, креирај команду виртуелног окружења (-м венв) са именом .венв

  • Сада ако наведете датотеке вашег тренутног директоријума, требало би да видите фасциклу .венв.
$ ls -l
drwxr-xr-x    - daniel 30 abr 23:12 .venv
# Other files ...
  • Да бисмо активирали виртуелно окружење, позивамо изворну команду.
source .venv/bin/activate
  Како користити Амазон Мусиц на Твитцх стреамовима уживо

Платформа
Шкољка
Команда за активирање виртуелног окружења
ПОСИКС
басх/зсх
$ соурце <венв>/бин/ацтивате

риба
$ соурце <венв>/бин/ацтивате.фисх

цсх/тцсх
$ соурце <венв>/бин/ацтивате.цсх

ПоверСхелл Цоре
$ <венв>/бин/Ацтивате.пс1
Виндовс
цмд.еке
Ц:> <венв>Сцриптсацтивате.бат

ПоверСхелл
ПС Ц:> <венв>СцриптсАцтивате.пс1

Сада, ако сте покренули исправну команду, ваша шкољка би требало да има име виртуелног окружења у себи.

$ source .venv/bin/activate.fish

(.venv) $ 

Инсталирајте Дјанго

Након што активирате своје виртуелно окружење, сада можете да инсталирате било коју верзију Дјанга коју желите. У овом случају, добар је избор инсталирати најновију верзију.

$ 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-admin startproject mytestingproject

Ово ће креирати Дјанго пројекат са именом митестингпројецт. Након креирања желимо да уђете у директоријум где се налази структура пројекта. Па хајде да уђемо у њега и покренемо Дјанго сервер.

# Enter to the project directory
(.venv)$ cd mytestingproject/

# Listing the files inside the project
(.venv) $ ls
mytestingproject  manage.py 

Сада када сте ушли, хајде да покренемо Дјанго сервер да видимо како изгледа.

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

У основи, Дјанго нам говори да локални сервер ради на нашем локалном хосту (127.0.0.1 увек указује на њега), на подразумеваном порту, 8000.

  Напуните своју маркетиншку стратегију уз Фресхмаркетер

Не брините због поруке о грешци. Прво, хајде да проверимо да ли све ради добро на нашем локалном серверу. Да бисте то урадили, идите у свој веб прегледач и налепите овај правац:

http://localhost:8000/
# Do you note that localhost and 127.0.0.1 are the same?

Ако све ради добро, требало би да видите Дјанго прелеп шаблон.

То је све о нашој Дјанго инсталацији.

Хајде сада да изложимо овај Дјанго пројекат. Ако радите на сложенијем пројекту, следеће методе откривања Дјанго апликација такође ће радити.

Излагање Дјанго апликације са Нгроком

Као што сам рекао раније, Нгрок је један од алата који ће нам омогућити да наш локални сервер поставимо на интернет. Дакле, пре свега Преузмите Нгрок са званичне веб странице.

Када га инсталирате, наставимо са потребним командама.

Отворите другу љуску, задржавајући терминал који ваш Дјанго сервер тренутно ради, и откуцајте.

$  ngrok help
NAME:
   ngrok - tunnel local ports to public URLs and inspect traffic

More commands ....

Ово ће вам дати брз поглед на доступне команде које Нгрок нуди, а такође ће вам омогућити да је процес инсталације прошао исправно.

Да бисмо направили УРЛ где људи могу да приступе нашем серверу, покренимо.

    $ ngrok http 8000 
# secure public URL for port 8000 web server

Покрећемо аргумент хттп, да креирамо УРЛ који ће се повезати на порт 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       

Како пише, Нгрок прослеђује тај чудан и ружан УРЛ нашем локалном хосту. Али магија се дешава када у претраживач ударите УРЛ адресу коју вам је дао Нгрок.

  Како блокирати веб локације у Гоогле Цхроме-у

Промена подешавања.пи

Вау, шта се управо догодило 😱?

Чини се да Дјанго даје грешку због поставке ДисалловедХост. Ако проверите љуску у којој користите Дјанго сервер и ону са Нгрок сесијом, добићете неке поруке за отклањање грешака.

# 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                           
                                              

Као што нам Дјанго говори, морамо додати домен који повезујемо у конфигурациону променљиву АЛЛОВЕД_ХОСТС. Али имамо проблем, а то је што је име домена превелико и збуњујуће.

Па хајде да променимо мало Дјанго подешавања, да решимо ову грешку. Отворите датотеку сеттингс.пи која се налази у фасцикли пројекта.

# mytestingproject/settings.py

# Line 28

# Change from
ALLOWED_HOSTS = []

# To

ALLOWED_HOSTS = ["*"]

Ако знате неки регуларни израз, можете ценити да постављамо џокер знак, где ће сви домаћини бити дозвољени.

Сада поново учитајте сајт и погледајте резултат.

Сада све ради савршено! А ако почнете да креирате апликације за пројекат и постављате УРЛ-ове и приказе, све ће се одразити на том јавном УРЛ-у.

Напомена: Не заборавите да промените АЛЛОВЕД_ХОСТС у продукцији, јер би то створило огромну безбедносну рупу.

Закључци

У овом водичу сте научили како да креирате демо УРЛ за свој Дјанго пројекат, без потребе да га примењујете.

Вежбали сте како да покренете Дјанго пројекат и радите са датотеком сеттингс.пи у Дјангу.

Коначно, научили сте како да користите Нгрок и како да изложите било који локални сервер са њим.

Затим истражите неке од популарних Питхон оквира за прављење АПИ-ја.