Jak vystavit ukázkovou aplikaci Django na internetu s Ngrokem?

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.

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.
  Opravit Roku Low Power Error

Plošina
Shell
Příkaz pro aktivaci virtuálního prostředí
POSIX
bash/zsh
$ source /bin/activate

Ryba
$ source /bin/activate.fish

csh/tcsh
$ source /bin/activate.csh

PowerShell Core
$ /bin/Activate.ps1
Okna
cmd.exe
C:> Scriptsactivate.bat

PowerShell
PS C:> ScriptsActivate.ps1

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.

  Vyberte si ingredience a získejte recepty s informacemi o kaloriích

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.

  Opravte zaseknutý disk na připojovací obrazovce

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.