• Erledigen Sie die Anwendungssicherheit auf die richtige Weise! Erkennen, schützen, überwachen, beschleunigen und mehr…
  • Lassen Sie uns lernen, wie Sie eine Django-Demo-App dem Internet zugänglich machen. Das, ohne es in einem Hosting-Service bereitzustellen.

    Das Konfigurieren einer Staging-Bereitstellungsumgebung, um nur eine Demo Ihrer Django-App anzuzeigen, ist schrecklich. Noch mehr, wenn Sie eine URL nur für ein paar Minuten benötigen, um sie einem Kunden oder Teamkollegen anzuzeigen.

    Am besten verwenden Sie ein Tool, um Ihren aktuellen lokalen Server verfügbar zu machen. Genau! Menschen auf der ganzen Welt können sehen, was auf Ihrem lokalen Host passiert.

    Zu diesem Zweck werden wir verwenden Ngrok. Mit diesem Tool können wir öffentliche URLs basierend auf den lokalen Ports unserer Computer erstellen. All dies dank der Magie von Tunnels.

    Bevor Sie beginnen, wird der gesamte Code, der an diesem Tutorial gearbeitet hat, in diesem verfügbar sein Github-Repository.

    Voraussetzungen

    Es wird empfohlen, all diese grundlegenden Dinge zu kennen. Obwohl es wahrscheinlich ist, dass Sie diesem Tutorial ohne weitere Probleme folgen können.

    Erstellen einer Django-App

    Um ein schrittweises Tutorial zu erstellen, erkläre ich den Prozess des Erstellens eines Django-Projekts. Wenn Sie bereits einen haben, können Sie diesen Abschnitt überspringen.

    Virtuelle Umgebung

    Lassen Sie uns zunächst eine erstellen Virtuelle Python-Umgebung.

    • Öffnen Sie also Ihr Systemterminal (oder Ihre Shell).
    • Wenn Sie das Öffnen Ihres Systemterminals zu kompliziert finden, versuchen Sie, das integrierte Terminal des zu verwenden Code-Editor.

    • Klicke auf Terminal> Neues Terminalund eine Shell sollte am unteren Rand Ihres Bildschirms erscheinen.
    • Geben Sie den folgenden Befehl ein, um mit dem integrierten Python-Tool eine virtuelle Umgebung zu erstellen.
    python -m venv .venv

    Es bedeutet im Grunde:

    Hey Python, erstelle einen Befehl für eine virtuelle Umgebung (-m venv) mit dem Namen .venv 

    • Wenn Sie nun die Dateien Ihres aktuellen Verzeichnisses auflisten, sollte a angezeigt werden .venv Ordner.
    $ ls -l
    drwxr-xr-x    - daniel 30 abr 23:12 .venv
    # Other files ...
    • Um die virtuelle Umgebung zu aktivieren, rufen wir die Quelle Befehl.
    source .venv/bin/activate
    • Wenn Sie Probleme haben, lesen Sie bitte die folgende Tabelle, die dem Beamten entnommen wurde Python-Dokumentation.
    Plattform Schale Befehl zum Aktivieren der virtuellen Umgebung
    POSIX bash / zsh $ source / bin / aktivieren
    Fisch $ source /bin/activate.fish
    csh / tcsh $ source /bin/activate.csh
    PowerShell Core $ /bin/Activate.ps1
    Windows cmd.exe C: \> \ Scripts \ activate.bat
    Powershell PS C: \> \ Scripts \ Activate.ps1

    Wenn Sie nun den richtigen Befehl ausgeführt haben, sollte Ihre Shell den Namen der virtuellen Umgebung enthalten.

    $ source .venv/bin/activate.fish
    
    (.venv) $ 
    

    Installiere Django

    Nachdem Sie Ihre virtuelle Umgebung aktiviert haben, können Sie jetzt jede gewünschte Django-Version installieren. In diesem Fall ist es eine gute Wahl, die neueste Version zu installieren.

    $ 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
    

    Jetzt ist es Zeit, die grundlegende Projektstruktur der Django-App zu erstellen, die Sie verfügbar machen möchten.

    $ django-admin startproject mytestingproject
    

    Dadurch wird ein Django-Projekt mit dem Namen erstellt meintestprojekt. Nach dem Erstellen möchten wir, dass Sie das Verzeichnis eingeben, in dem sich die Projektstruktur befindet. Also lasst uns cd hinein und führen Sie den Django-Server aus.

    # Enter to the project directory
    (.venv)$ cd mytestingproject/
    
    # Listing the files inside the project
    (.venv) $ ls
    mytestingproject  manage.py 

    Nachdem Sie sich angemeldet haben, lassen Sie uns den Django-Server ausführen, um zu sehen, wie er aussieht.

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

    Grundsätzlich teilt uns Django mit, dass auf unserem lokalen Host (127.0.0.1 zeigt immer darauf) auf dem Standardport 8000 ein lokaler Server ausgeführt wird.

    Mach dir keine Sorgen über die Fehlermeldung. Lassen Sie uns zunächst überprüfen, ob auf unserem lokalen Server alles einwandfrei funktioniert. Gehen Sie dazu zu Ihrem Webbrowser und fügen Sie die folgende Richtung ein:

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

    Wenn alles gut funktioniert, sollten Sie eine schöne Django-Vorlage sehen.

    Das ist alles über unsere Django-Installation.

    Lassen Sie uns nun dieses Django-Projekt vorstellen. Wenn Sie an einem komplexeren Projekt arbeiten, funktionieren auch die folgenden Methoden zum Anzeigen von Django-Apps.

    Belichten einer Django-App mit Ngrok

    Wie ich bereits sagte, ist Ngrok eines der Tools, mit denen wir unseren lokalen Server im Internet landen können. Also zuallererst Laden Sie Ngrok herunter von der offiziellen Website.

    Sobald Sie es installiert haben, fahren wir mit den erforderlichen Befehlen fort.

    Öffnen Sie eine andere Shell, behalten Sie das Terminal bei, auf dem Ihr Django-Server gerade ausgeführt wird, und geben Sie ein.

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

    Auf diese Weise erhalten Sie einen kurzen Überblick über die verfügbaren Befehle, die Ngrok anbietet, und können sicherstellen, dass der Installationsvorgang ordnungsgemäß ausgeführt wurde.

    Lassen Sie uns ausführen, um eine URL zu erstellen, über die Benutzer auf unseren Server zugreifen können.

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

    Wir führen die http Argument, um eine URL zu erstellen, die eine Verbindung zum Port herstellt 8000 unseres localhost.

    Hier ist das Ergebnis, das Sie wahrscheinlich erhalten werden.

    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       

    Wie es heißt, leitet Ngrok diese seltsame und hässliche URL an unsere weiter localhost. Aber die Magie passiert, wenn Sie den Browser mit der URL drücken, die Ngrok Ihnen gegeben hat.

    Fehlerseite.

    Einstellungen ändern.py

    Wow, was ist gerade passiert?

    Es scheint, dass Django einen Fehler wegen a wirft Unzulässiger Host Rahmen. Wenn Sie die Shell überprüfen, in der Sie den Django-Server ausführen, und die mit der Ngrok-Sitzung, erhalten Sie einige Debug-Meldungen.

    # 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                           
                                                  

    Wie Django uns mitteilt, müssen wir die Domäne, die wir verbinden, zur Konfigurationsvariablen ALLOWED_HOSTS hinzufügen. Aber wir haben ein Problem und es ist, dass der Domainname zu groß und verwirrend ist.

    Ändern wir also ein wenig die Django-Einstellungen, um diesen Fehler zu beheben. Öffne das settings.py Datei im Projektordner.

    # mytestingproject/settings.py
    
    # Line 28
    
    # Change from
    ALLOWED_HOSTS = []
    
    # To
    
    ALLOWED_HOSTS = ["*"]

    Wenn Sie einen regulären Ausdruck kennen, können Sie sich darüber freuen, dass wir einen Platzhalter festlegen, in dem alle Hosts zugelassen werden.

    Laden Sie nun die Site neu und sehen Sie das Ergebnis.

    Arbeitsseite

    Jetzt funktioniert alles perfekt! Wenn Sie anfangen, Anwendungen für das Projekt zu erstellen und URLs und Ansichten festzulegen, werden alle auf dieser öffentlichen URL angezeigt.

    Hinweis: Vergiss nicht dich zu ändern ALLOWED_HOSTS in der Produktion, da es eine riesige Sicherheitslücke produzieren würde.

    Schlussfolgerungen

    In diesem Lernprogramm haben Sie gelernt, wie Sie eine Demo-URL für Ihr Django-Projekt erstellen, ohne sie bereitstellen zu müssen.

    Sie haben geübt, wie man ein Django-Projekt startet und mit dem arbeitet settings.py Datei in Django.

    Schließlich haben Sie gelernt, wie Sie Ngrok verwenden und wie Sie einen lokalen Server damit verfügbar machen.

    Als nächstes erkunden Sie einige der beliebte Python-Frameworks zum Erstellen von APIs.