La oss lære hvordan du eksponerer en Django-demo-app for internett. Det, uten å distribuere det i en vertstjeneste.
Det er forferdelig å konfigurere et iscenesettelsesdistribusjonsmiljø bare for å vise en demo av Django-appen din. Enda mer, hvis du bare trenger en URL i et par minutter, for å vise den til en klient eller lagkamerat.
Det beste alternativet er å bruke et verktøy for å avsløre din nåværende lokale server. Nøyaktig! Folk over hele verden vil kunne se hva som skjer på din lokale vert.
Til det formålet vil vi bruke Ngrok. Dette verktøyet lar oss lage offentlige URL-er basert på de lokale portene på datamaskinene våre. Alt dette takket være magien til Tunneler.
Før du starter, vil all koden som ble jobbet med denne opplæringen være tilgjengelig i denne Github-depot.
Innholdsfortegnelse
Forhåndskrav
Det anbefales å vite alle disse grunnleggende tingene. Selv om det er sannsynlig at du kan følge med på denne opplæringen, uten ytterligere problemer.
Opprette en Django-app
For å lage en trinn-for-trinn-veiledning, vil jeg forklare prosessen med å lage et Django-prosjekt. Hvis du allerede har en, kan du hoppe over denne delen.
Virtuelt miljø
Først av alt, la oss lage en Python virtuelt miljø.
- Så åpne opp systemterminalen (eller skallet).
- Hvis du synes det er for komplisert å åpne systemterminalen, prøv å bruke den innebygde terminalen til koderedigeringsprogrammet.
- Klikk på Terminal>Ny terminal, og et skall skal vises nederst på skjermen.
- Skriv inn følgende kommando for å lage et virtuelt miljø, med det innebygde Python-verktøyet.
python -m venv .venv
Det betyr i utgangspunktet:
Hei Python, lag en kommando for virtuelt miljø (-m venv) med navnet .venv
- Nå hvis du viser filene i din nåværende katalog, bør du se en .venv-mappe.
$ ls -l drwxr-xr-x - daniel 30 abr 23:12 .venv # Other files ...
- For å aktivere det virtuelle miljøet kaller vi kildekommandoen.
source .venv/bin/activate
- Hvis du finner noen problemer, vennligst se følgende tabell hentet fra tjenestemannen python dokumentasjon.
Plattform
Shell
Kommando for å aktivere virtuelt miljø
POSIX
bash/zsh
$ kilde
fisk
$ kilde
csh/tcsh
$ kilde
PowerShell Core
$
Windows
cmd.exe
C:>
Kraftskall
PS C:>
Nå hvis du har kjørt riktig kommando, skal skallet ditt ha navnet på det virtuelle miljøet i seg.
$ source .venv/bin/activate.fish (.venv) $
Installer Django
Etter å ha aktivert det virtuelle miljøet ditt, kan du nå installere hvilken Django-versjon du vil. I dette tilfellet er det et godt valg å 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
Nå er det på tide å lage den grunnleggende prosjektstrukturen til Django-appen du vil avsløre.
$ django-admin startproject mytestingproject
Dette vil lage et Django-prosjekt med navnet mytestingproject. Etter å ha opprettet det vil du gå inn i katalogen der prosjektstrukturen er plassert. Så la oss cd inn i den og kjøre Django-serveren.
# Enter to the project directory (.venv)$ cd mytestingproject/ # Listing the files inside the project (.venv) $ ls mytestingproject manage.py
Nå som du er inne, la oss kjøre Django-serveren for å se hvordan den ser ut.
(.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.
I utgangspunktet forteller Django oss at en lokal server kjører på vår lokale vert (127.0.0.1 peker alltid på den), på standardporten, 8000.
Ikke bekymre deg for feilmeldingen. Først, la oss sjekke at alt fungerer bra på vår lokale server. For å gjøre det, gå til nettleseren din og lim inn denne retningen:
http://localhost:8000/ # Do you note that localhost and 127.0.0.1 are the same?
Hvis alt fungerer bra, bør du se en vakker Django-mal.
Det handler om Django-installasjonen vår.
La oss nå begynne å avsløre dette Django-prosjektet. Hvis du jobber med et mer komplekst prosjekt, vil følgende metoder for å eksponere Django-apper også fungere.
Eksponering av en Django-app med Ngrok
Som jeg sa før, er Ngrok et av verktøyene som lar oss lande vår lokale server på internett. Så først og fremst Last ned Ngrok fra den offisielle nettsiden.
Når du har installert den, la oss fortsette med de nødvendige kommandoene.
Åpne et annet skall, behold terminalen som Django-serveren din kjører for øyeblikket, og skriv.
$ ngrok help NAME: ngrok - tunnel local ports to public URLs and inspect traffic More commands ....
Dette vil gi deg en rask titt på de tilgjengelige kommandoene som Ngrok tilbyr, og vil også gi deg at installasjonsprosessen gikk riktig.
For å lage en URL der folk kan få tilgang til serveren vår, la oss kjøre.
$ ngrok http 8000
# secure public URL for port 8000 web server
Vi kjører http-argumentet for å lage en URL som vil koble til port 8000 til vår lokale vert.
Her er resultatet du sannsynligvis 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 det står, videresender Ngrok den rare og stygge URL-en til vår lokale vert. Men magien skjer når du trykker på nettleseren med nettadressen Ngrok ga deg.
Endre settings.py
Wow, hva skjedde akkurat 😱?
Det ser ut til at Django gir en feil på grunn av en DisallowedHost-innstilling. Hvis du sjekker skallet du kjører Django-serveren i, og det med Ngrok-økten, får du noen feilsøkingsmeldinger.
# 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 forteller oss, må vi legge til domenet vi kobler til ALLOWED_HOSTS konfigurasjonsvariabelen. Men vi har et problem, og det er at domenenavnet er for stort og forvirrende.
Så la oss endre litt på Django-innstillingene for å løse denne feilen. Åpne filen settings.py som ligger i prosjektmappen.
# mytestingproject/settings.py # Line 28 # Change from ALLOWED_HOSTS = [] # To ALLOWED_HOSTS = ["*"]
Hvis du kjenner noen regex, kan du sette pris på at vi setter et jokertegn, der alle vertene blir tillatt.
Last inn siden på nytt og se resultatet.
Alt fungerer perfekt nå! Og hvis du begynner å lage applikasjoner for prosjektet og angi URL-er og visninger, vil alt gjenspeiles på den offentlige URL-en.
Merk: Ikke glem å endre ALLOWED_HOSTS i produksjonen, siden det vil produsere et stort sikkerhetshull.
Konklusjoner
I denne opplæringen lærte du hvordan du oppretter en demo-URL for Django-prosjektet ditt uten å måtte distribuere det.
Du øvde på hvordan du starter et Django-prosjekt og jobber med filen settings.py i Django.
Til slutt lærte du hvordan du bruker Ngrok, og hvordan du avslører en lokal server med den.
Deretter kan du utforske noen av de populære Python-rammeverkene for å bygge API.