Pojďme se naučit, jak vystavit demo aplikaci Django na internetu. To bez nasazení v hostingové službě.
Konfigurovat prostředí zkušebního nasazení jen kvůli ukázce vaší aplikace Django je hrozné. Ještě více, pokud potřebujete adresu URL jen na několik minut, abyste ji ukázali klientovi nebo spoluhráči.
Nejlepší možností je použít nástroj k odhalení vašeho aktuálního místního serveru. Přesně tak! Lidé z celého světa budou moci vidět, co se děje na vašem localhostu.
Za tímto účelem použijeme Ngrok. Tento nástroj nám umožní vytvářet veřejné adresy URL na základě místních portů našich počítačů. To vše díky magii Tunely.
Před spuštěním bude veškerý kód zpracovaný na tomto tutoriálu k dispozici v tomto úložiště Github.
Table of Contents
Předběžné požadavky
Doporučuje se znát všechny tyto základní věci. I když je pravděpodobné, že můžete postupovat podle tohoto návodu bez dalších problémů.
Vytvoření aplikace Django
Abychom vytvořili tutoriál krok za krokem, vysvětlím proces vytváření projektu Django. Pokud již nějakou máte, můžete tuto sekci přeskočit.
Virtuální prostředí
Nejprve si vytvoříme a Virtuální prostředí Python.
- Otevřete tedy svůj systémový terminál (nebo shell).
- Pokud se vám zdá příliš složité otevřít váš systémový terminál, zkuste použít vestavěný terminál editoru kódu.
- Klikněte na Terminál>Nový terminál a ve spodní části obrazovky by se měl objevit shell.
- Chcete-li vytvořit virtuální prostředí pomocí vestavěného nástroje Python, zadejte následující příkaz.
python -m venv .venv
V zásadě to znamená:
Hej Pythone, vytvořte příkaz virtuálního prostředí (-m venv) s názvem .venv
- Nyní, když vypíšete soubory vašeho aktuálního adresáře, měli byste vidět složku .venv.
$ ls -l drwxr-xr-x - daniel 30 abr 23:12 .venv # Other files ...
- Pro aktivaci virtuálního prostředí zavoláme příkaz source.
source .venv/bin/activate
- Pokud narazíte na nějaký problém, podívejte se prosím na následující tabulku převzatou z oficiálního webu dokumentaci pythonu.
Plošina
Shell
Příkaz pro aktivaci virtuálního prostředí
POSIX
bash/zsh
$ source
Ryba
$ source
csh/tcsh
$ source
PowerShell Core
$
Okna
cmd.exe
C:>
PowerShell
PS C:>
Nyní, pokud jste spustili správný příkaz, váš shell by měl mít název virtuálního prostředí.
$ source .venv/bin/activate.fish (.venv) $
Nainstalujte Django
Po aktivaci vašeho virtuálního prostředí si nyní můžete nainstalovat jakoukoli verzi Django, kterou chcete. V tomto případě je dobrou volbou nainstalovat nejnovější.
$ 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
Nyní je čas vytvořit základní strukturu projektu aplikace Django, kterou chcete vystavit.
$ django-admin startproject mytestingproject
Tím se vytvoří projekt Django s názvem mytestingproject. Po jeho vytvoření budete chtít vstoupit do adresáře, kde se nachází struktura projektu. Pojďme do toho cd a spusťte server Django.
# Enter to the project directory (.venv)$ cd mytestingproject/ # Listing the files inside the project (.venv) $ ls mytestingproject manage.py
Nyní, když jste uvnitř, spusťte server Django, abyste viděli, jak to vypadá.
(.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.
V podstatě nám Django říká, že na našem localhostu běží místní server (127.0.0.1 na něj vždy ukazuje), na výchozím portu 8000.
Nedělejte si starosti s chybovou zprávou. Nejprve zkontrolujeme, zda vše funguje správně na našem místním serveru. Chcete-li to provést, přejděte do webového prohlížeče a vložte tento směr:
http://localhost:8000/ # Do you note that localhost and 127.0.0.1 are the same?
Pokud vše funguje dobře, měli byste vidět krásnou šablonu Django.
To je vše o naší instalaci Django.
Nyní se pojďme pustit do odhalení tohoto projektu Django. Pokud pracujete na složitějším projektu, budou fungovat i následující metody odhalování aplikací Django.
Odhalení aplikace Django s Ngrokem
Jak jsem již řekl, Ngrok je jedním z nástrojů, který nám umožní přistát na internetu. Tak za prvé Stáhnout Ngrok z oficiálních stránek.
Jakmile jej nainstalujete, pokračujte s potřebnými příkazy.
Otevřete další shell, ponechte terminál, na kterém je aktuálně spuštěn váš server Django, a zadejte.
$ ngrok help NAME: ngrok - tunnel local ports to public URLs and inspect traffic More commands ....
To vám poskytne rychlý pohled na dostupné příkazy, které Ngrok nabízí, a také potvrdí, že proces instalace proběhl správně.
Abychom vytvořili URL, kde budou mít lidé přístup k našemu serveru, spusťte.
$ ngrok http 8000
# secure public URL for port 8000 web server
Spouštíme argument http, abychom vytvořili adresu URL, která se připojí k portu 8000 našeho localhost.
Zde je výsledek, který pravděpodobně dostanete.
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
Jak se říká, Ngrok přeposílá tuto podivnou a ošklivou adresu URL našemu localhostu. Ale kouzlo se stane, když narazíte na prohlížeč s adresou URL, kterou vám Ngrok dal.
Změna nastavení.py
Wow, co se právě stalo 😱?
Zdá se, že Django hází chybu kvůli nastavení DisallowedHost. Pokud zkontrolujete shell, ve kterém běží server Django, a ten s relací Ngrok, dostanete nějaké ladicí zprávy.
# 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
Jak nám říká Django, musíme přidat doménu, ke které se připojujeme, do konfigurační proměnné ALLOWED_HOSTS. Ale máme problém, a to ten, že název domény je příliš velký a matoucí.
Pojďme tedy trochu změnit nastavení Django, abychom tuto chybu vyřešili. Otevřete soubor settings.py umístěný ve složce projektu.
# mytestingproject/settings.py # Line 28 # Change from ALLOWED_HOSTS = [] # To ALLOWED_HOSTS = ["*"]
Pokud znáte nějaký regulární výraz, můžete ocenit, že nastavujeme zástupný znak, kde budou povoleni všichni hostitelé.
Nyní znovu načtěte web a podívejte se na výsledek.
Vše nyní funguje perfektně! A pokud začnete vytvářet aplikace pro projekt a nastavovat adresy URL a zobrazení, vše se projeví na této veřejné adrese URL.
Poznámka: Nezapomeňte ve výrobě změnit ALLOWED_HOSTS, protože by to vytvořilo obrovskou bezpečnostní díru.
Závěry
V tomto tutoriálu jste se naučili, jak vytvořit demo URL pro váš projekt Django, aniž byste jej museli nasazovat.
Procvičili jste si, jak spustit projekt Django a pracovat se souborem settings.py v Django.
Nakonec jste se naučili používat Ngrok a jak s ním vystavit jakýkoli místní server.
Dále prozkoumejte některé z populárních frameworků Pythonu pro tvorbu API.