Kā atklāt Django demonstrācijas lietotni internetam, izmantojot Ngrok?

Uzzināsim, kā atklāt Django demonstrācijas lietotni internetā. Tas, neizvietojot to mitināšanas pakalpojumā.

Iestudēšanas izvietošanas vides konfigurēšana, lai tikai parādītu savas Django lietotnes demonstrāciju, ir šausmīgi. Vēl jo vairāk, ja URL nepieciešams tikai dažas minūtes, lai to parādītu klientam vai komandas biedram.

Labākais risinājums ir izmantot rīku, lai atklātu pašreizējo vietējo serveri. tieši tā! Cilvēki visā pasaulē varēs redzēt, kas notiek jūsu vietējā resursdatorā.

Šim nolūkam mēs izmantosim Ngrok. Šis rīks ļaus mums izveidot publiskus URL, pamatojoties uz mūsu datoru vietējiem portiem. Tas viss, pateicoties burvībai Tuneļi.

Pirms sākat visu kodu, kas strādāja pie šīs apmācības, būs pieejams šajā Github repozitorijs.

Iepriekšējās prasības

Ieteicams zināt visas šīs pamatlietas. Lai gan, visticamāk, jūs varat sekot šai apmācībai bez papildu problēmām.

Django lietotnes izveide

Lai izveidotu soli pa solim apmācību, es izskaidrošu Django projekta izveides procesu. Ja jums tāda jau ir, varat izlaist šo sadaļu.

Virtuālā vide

Vispirms izveidosim a Python virtuālā vide.

  • Tāpēc atveriet savu sistēmas termināli (vai apvalku).
  • Ja sistēmas termināļa atvēršana jums šķiet pārāk sarežģīta, mēģiniet izmantot koda redaktora iebūvēto termināli.
  • Noklikšķiniet uz Terminālis> Jauns terminālis, un ekrāna apakšā vajadzētu parādīties apvalkam.
  • Ierakstiet šo komandu, lai izveidotu virtuālo vidi ar iebūvēto Python rīku.
python -m venv .venv

Tas būtībā nozīmē:

Hei Python, izveidojiet virtuālās vides (-m venv) komandu ar nosaukumu .venv

  • Tagad, ja uzskaitāt pašreizējā direktorija failus, jums vajadzētu redzēt .venv mapi.
$ ls -l
drwxr-xr-x    - daniel 30 abr 23:12 .venv
# Other files ...
  • Lai aktivizētu virtuālo vidi, mēs izsaucam avota komandu.
source .venv/bin/activate
  • Ja atrodat kādas problēmas, lūdzu, skatiet šo tabulu, kas iegūta no ierēdņa python dokumentācija.
  Kur skatīties Atrast, kur legāli var skatīties filmas un TV pārraides [Web]

Platforma
Apvalks
Komanda, lai aktivizētu virtuālo vidi
POSIX
bash/zsh
$ avots /bin/activate

zivis
$ avots /bin/activate.fish

csh/tcsh
$ avots /bin/activate.csh

PowerShell kodols
$ /bin/Activate.ps1
Windows
cmd.exe
C:> Scriptsactivate.bat

PowerShell
PS C:> ScriptsActivate.ps1

Tagad, ja esat palaidis pareizo komandu, čaulā tajā ir jābūt virtuālās vides nosaukumam.

$ source .venv/bin/activate.fish

(.venv) $ 

Instalējiet Django

Pēc virtuālās vides aktivizēšanas tagad varat instalēt jebkuru vēlamo Django versiju. Šajā gadījumā tā ir laba izvēle instalēt jaunāko.

$ 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

Tagad ir pienācis laiks izveidot Django lietotnes pamata projekta struktūru, kuru vēlaties eksponēt.

$ django-admin startproject mytestingproject

Tādējādi tiks izveidots Django projekts ar nosaukumu mytestingproject. Pēc tā izveidošanas mēs vēlamies, lai jūs vēlēsities ievadīt direktoriju, kurā atrodas projekta struktūra. Iesim tajā CD un palaidīsim Django serveri.

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

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

Tagad, kad esat pievienojies, palaidīsim Django serveri, lai redzētu, kā tas izskatās.

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

Būtībā Django mums saka, ka mūsu lokālajā resursdatorā (127.0.0.1 vienmēr norāda uz to) darbojas vietējais serveris noklusējuma portā 8000.

  12 labākie spēļu monitori ar lielisku veiktspēju un zemu ievades nobīdi

Neuztraucieties par kļūdas ziņojumu. Vispirms pārbaudīsim, vai mūsu vietējā serverī viss darbojas labi. Lai to izdarītu, atveriet savu tīmekļa pārlūkprogrammu un ielīmējiet šo virzienu:

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

Ja viss darbojas labi, jums vajadzētu redzēt skaistu Django veidni.

Tas viss ir par mūsu Django instalāciju.

Tagad sāksim atklāt šo Django projektu. Ja strādājat pie sarežģītāka projekta, darbosies arī tālāk norādītās Django lietotņu parādīšanas metodes.

Django lietotnes eksponēšana ar Ngrok

Kā jau teicu iepriekš, Ngrok ir viens no rīkiem, kas ļaus mums izvietot mūsu vietējo serveri internetā. Tātad vispirms Lejupielādēt Ngrok no oficiālās vietnes.

Kad esat to instalējis, turpināsim ar nepieciešamajām komandām.

Atveriet citu čaulu, saglabājot termināli, kurā pašlaik darbojas jūsu Django serveris, un ierakstiet.

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

More commands ....

Tas ļaus jums ātri apskatīt pieejamās komandas, ko piedāvā Ngrok, kā arī nodrošinās, ka instalēšanas process noritēja pareizi.

Lai izveidotu URL, kur cilvēki var piekļūt mūsu serverim, palaidīsim.

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

Mēs palaižam http argumentu, lai izveidotu URL, kas savienosies ar mūsu lokālā resursdatora 8000. portu.

Šeit ir rezultāts, ko jūs, iespējams, iegūsit.

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       

Kā teikts, Ngrok pārsūta šo dīvaino un neglīto URL mūsu vietējam saimniekdatoram. Bet burvība notiek, kad nospiežat pārlūkprogrammu ar vietrādi URL, ko jums sniedza Ngrok.

  7 labākie drošās tīmekļa vārtejas (SWG) risinājumi maziem un lieliem uzņēmumiem

Mainot settings.py

Oho, kas tikko notika 😱?

Šķiet, ka Django rada kļūdu DisallowedHost iestatījuma dēļ. Ja pārbaudīsit čaulu, kurā darbojas Django serveris, un čaulu ar Ngrok sesiju, jūs saņemsit dažus atkļūdošanas ziņojumus.

# 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                           
                                              

Kā mums saka Django, mums jāpievieno domēns, ar kuru mēs savienojam, konfigurācijas mainīgajam ALLOWED_HOSTS. Bet mums ir problēma, un tā ir tā, ka domēna vārds ir pārāk liels un mulsinošs.

Tāpēc nedaudz mainīsim Django iestatījumus, lai atrisinātu šo kļūdu. Atveriet failu settings.py, kas atrodas projekta mapē.

# mytestingproject/settings.py

# Line 28

# Change from
ALLOWED_HOSTS = []

# To

ALLOWED_HOSTS = ["*"]

Ja zināt kādu regulāro izteiksmi, varat novērtēt, ka mēs iestatām aizstājējzīmi, kurā būs atļauti visi saimnieki.

Tagad atkārtoti ielādējiet vietni un skatiet rezultātu.

Tagad viss strādā perfekti! Un, ja jūs sākat veidot lietojumprogrammas projektam un iestatīt vietrāžus URL un skatus, tas viss tiks atspoguļots šajā publiskajā URL.

Piezīme. Neaizmirstiet mainīt ALLOWED_HOSTS ražošanā, jo tas radītu milzīgu drošības robu.

Secinājumi

Šajā apmācībā jūs uzzinājāt, kā izveidot demonstrācijas URL savam Django projektam, neizvietojot to.

Jūs praktizējāt, kā sākt Django projektu un strādāt ar Django failu settings.py.

Visbeidzot, jūs uzzinājāt, kā izmantot Ngrok un kā ar to atklāt jebkuru vietējo serveri.

Pēc tam izpētiet dažus no populārajiem Python ietvariem, lai izveidotu API.