Lad os lære, hvordan man eksponerer en Django-demo-app til internettet. Det uden at implementere det i en hostingtjeneste.
At konfigurere et iscenesættelsesimplementeringsmiljø bare for at vise en demo af din Django-app er forfærdeligt. Endnu mere, hvis du kun har brug for en URL i et par minutter, for at vise den til en klient eller holdkammerat.
Den bedste mulighed er at bruge et værktøj til at afsløre din nuværende lokale server. Nemlig! Folk over hele verden vil være i stand til at se, hvad der sker på din lokale vært.
Til det formål vil vi bruge Ngrok. Dette værktøj giver os mulighed for at oprette offentlige URL’er baseret på de lokale porte på vores computere. Alt dette takket være magien ved Tunneler.
Før du starter, vil al den kode, der arbejdes på denne tutorial, være tilgængelig i denne Github-depot.
Indholdsfortegnelse
Forudgående krav
Det anbefales at kende alle disse grundlæggende ting. Selvom det er sandsynligt, at du kan følge med i denne tutorial uden yderligere problemer.
Oprettelse af en Django-app
For at oprette en trin-for-trin tutorial, vil jeg forklare processen med at oprette et Django-projekt. Hvis du allerede har en, kan du springe dette afsnit over.
Virtuelt miljø
Først og fremmest, lad os skabe en Python virtuelt miljø.
- Så åbn din systemterminal (eller skal).
- Hvis du finder det for kompliceret at åbne din systemterminal, så prøv at bruge den indbyggede terminal i kodeeditoren.
- Klik på Terminal>Ny terminal, og en shell skulle vises nederst på din skærm.
- Skriv følgende kommando for at oprette et virtuelt miljø med det indbyggede Python-værktøj.
python -m venv .venv
Det betyder grundlæggende:
Hej Python, opret en kommando for virtuelt miljø (-m venv) med navnet .venv
- Hvis du nu viser filerne i din nuværende mappe, skulle du se en .venv-mappe.
$ ls -l drwxr-xr-x - daniel 30 abr 23:12 .venv # Other files ...
- For at aktivere det virtuelle miljø kalder vi kildekommandoen.
source .venv/bin/activate
- Hvis du finder nogen problemer, henvises til følgende tabel udtrukket fra embedsmanden python dokumentation.
Platform
Skal
Kommando til at aktivere virtuelt miljø
POSIX
bash/zsh
$ source
fisk
$ source
csh/tcsh
$ source
PowerShell Core
$
Windows
cmd.exe
C:>
PowerShell
PS C:>
Hvis du nu har kørt den korrekte kommando, skal din shell have navnet på det virtuelle miljø i sig.
$ source .venv/bin/activate.fish (.venv) $
Installer Django
Efter at have aktiveret dit virtuelle miljø, er du nu i stand til at installere den Django-version, du ønsker. I dette tilfælde er det et godt valg at installere den nyeste.
$ 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
Nu er det tid til at skabe den grundlæggende projektstruktur for den Django-app, du vil eksponere.
$ django-admin startproject mytestingproject
Dette vil oprette et Django-projekt med navnet mytestingproject. Efter at have oprettet det, vil vi gerne gå ind i den mappe, hvor projektstrukturen er placeret. Så lad os cd ind i det og køre Django-serveren.
# Enter to the project directory (.venv)$ cd mytestingproject/ # Listing the files inside the project (.venv) $ ls mytestingproject manage.py
Nu hvor du er inde, lad os køre Django-serveren for at se, hvordan den ser ud.
(.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.
Grundlæggende fortæller Django os, at en lokal server kører på vores localhost (127.0.0.1 peger altid på den), på standardporten, 8000.
Du skal ikke bekymre dig om fejlmeddelelsen. Lad os først kontrollere, at alt fungerer fint på vores lokale server. For at gøre det skal du gå til din webbrowser og indsætte denne retning:
http://localhost:8000/ # Do you note that localhost and 127.0.0.1 are the same?
Hvis alt fungerer fint, bør du se en smuk Django skabelon.
Det handler om vores Django-installation.
Lad os nu gå i gang med at afsløre dette Django-projekt. Hvis du arbejder på et mere komplekst projekt, vil følgende metoder til at afsløre Django-apps også fungere.
Eksponering af en Django-app med Ngrok
Som jeg sagde før, er Ngrok et af de værktøjer, der vil lade os lande vores lokale server på internettet. Så først og fremmest Download Ngrok fra den officielle hjemmeside.
Når du har installeret det, lad os fortsætte med de nødvendige kommandoer.
Åbn en anden shell, behold den terminal, din Django-server kører i øjeblikket, og skriv.
$ ngrok help NAME: ngrok - tunnel local ports to public URLs and inspect traffic More commands ....
Dette vil give dig et hurtigt kig på de tilgængelige kommandoer, som Ngrok tilbyder, og vil også give dig, at installationsprocessen gik korrekt.
Lad os køre for at oprette en URL, hvor folk kan få adgang til vores server.
$ ngrok http 8000
# secure public URL for port 8000 web server
Vi kører http-argumentet for at oprette en URL, der forbinder til port 8000 på vores lokale vært.
Her er resultatet, du sandsynligvis vil få.
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
Som der står, videresender Ngrok den mærkelige og grimme URL til vores lokale vært. Men magien sker, når du rammer browseren med den URL, Ngrok gav dig.
Ændring af settings.py
Wow, hvad er der lige sket 😱?
Det ser ud til, at Django kaster en fejl på grund af en DisallowedHost-indstilling. Hvis du tjekker den shell, du kører Django-serveren i, og den med Ngrok-sessionen, får du nogle fejlretningsmeddelelser.
# 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
Som Django fortæller os, skal vi tilføje det domæne, vi forbinder til ALLOWED_HOSTS-konfigurationsvariablen. Men vi har et problem, og det er, at domænenavnet er for stort og forvirrende.
Så lad os ændre Django-indstillingerne lidt for at løse denne fejl. Åbn filen settings.py, der findes i projektmappen.
# mytestingproject/settings.py # Line 28 # Change from ALLOWED_HOSTS = [] # To ALLOWED_HOSTS = ["*"]
Hvis du kender nogle regex, kan du sætte pris på, at vi sætter et jokertegn, hvor alle værterne får lov.
Genindlæs nu siden, og se resultatet.
Alt fungerer perfekt nu! Og hvis du begynder at oprette applikationer til projektet og indstille URL’er og visninger, vil alt blive afspejlet på den offentlige URL.
Bemærk: Glem ikke at ændre ALLOWED_HOSTS i produktionen, da det ville producere et stort sikkerhedshul.
Konklusioner
I denne tutorial lærte du, hvordan du opretter en demo-URL til dit Django-projekt uden at skulle installere det.
Du øvede dig i, hvordan du starter et Django-projekt og arbejder med filen settings.py i Django.
Endelig lærte du, hvordan du bruger Ngrok, og hvordan du afslører enhver lokal server med den.
Udforsk derefter nogle af de populære Python-frameworks til at bygge API.