Apprenons à exposer une application de démonstration Django sur Internet. Cela, sans le déployer dans un service d'hébergement.
Configurer un environnement de déploiement intermédiaire juste pour montrer une démo de votre application Django est horrible. Encore plus, si vous n'avez besoin d'une URL que pendant quelques minutes, pour la montrer à un client ou à un coéquipier.
La meilleure option consiste à utiliser un outil pour exposer votre serveur local actuel. Exactement! Les gens du monde entier pourront voir ce qui se passe sur votre hôte local.
Pour cela, nous utiliserons Ngrok. Cet outil nous permettra de créer des URL publiques basées sur les ports locaux de nos ordinateurs. Tout cela grâce à la magie de Tunnels.
Avant de commencer tout le code travaillé sur ce tutoriel, sera disponible dans ce Github référentiel.
Pre-requirements
- Python 3.6+ installé dans votre système
- Un peu d'expérience avec les interfaces de ligne de commande
- Connaissance de base de Django
- Compréhension du Django-admin et manage.py scripts
Il est recommandé de connaître toutes ces choses de base. Bien qu'il soit probable que vous puissiez suivre ce didacticiel, sans autre problème.
Creating a Django app
Afin de créer un didacticiel pas à pas, je vais vous expliquer le processus de création d'un projet Django. Si vous en avez déjà un, vous pouvez sauter cette section.
Environnement virtuel
Tout d'abord, créons un Environnement virtuel Python.
- Alors ouvrez votre terminal système (ou shell).
- Si vous trouvez trop compliqué d'ouvrir votre terminal système, essayez d'utiliser le terminal intégré du éditeur de code.
- Cliquez sur Terminal> Nouveau terminal, et un shell devrait apparaître au bas de votre écran.
- Tapez la commande suivante pour créer un environnement virtuel, avec l'outil Python intégré.
python -m venv .venv
Cela signifie essentiellement:
Hey Python, créez une commande d'environnement virtuel (-m venv) avec le nom de .venv
- Maintenant, si vous répertoriez les fichiers de votre répertoire actuel, vous devriez voir un .venv dossier.
$ ls -l
drwxr-xr-x - daniel 30 abr 23:12 .venv
# Other files ...
- Pour activer l'environnement virtuel, nous appelons le la source commander.
source .venv/bin/activate
- Si vous rencontrez des problèmes, veuillez vous référer au tableau suivant extrait du document officiel documentation python.
Plateforme | coquillage | Commande pour activer l'environnement virtuel |
---|---|---|
POSIX | bash / zsh | $ source / bin / activate |
poissons | $ 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 |
Maintenant, si vous avez exécuté la bonne commande, votre shell devrait contenir le nom de l'environnement virtuel.
$ source .venv/bin/activate.fish
(.venv) $
Installez Django
Après avoir activé votre environnement virtuel, vous pouvez maintenant installer la version Django de votre choix. Dans ce cas, c'est un bon choix d'installer la dernière.
$ 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
Il est maintenant temps de créer la structure de projet de base de l'application Django que vous souhaitez exposer.
$ django-admin startproject mytestingproject
Cela créera un projet Django avec le nom de monprojet de test. Après l'avoir créé, nous voulons que vous souhaitiez entrer dans le répertoire où se trouve la structure du projet. Alors allons cd dedans et exécutez le serveur Django.
# Enter to the project directory
(.venv)$ cd mytestingproject/
# Listing the files inside the project
(.venv) $ ls
mytestingproject manage.py
Maintenant que vous y êtes, exécutons le serveur Django pour voir à quoi il ressemble.
(.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.
Fondamentalement, Django nous dit qu'un serveur local est en cours d'exécution sur notre hôte local (127.0.0.1 pointe toujours vers lui), sur le port par défaut, 8000.
Ne vous inquiétez pas du message d'erreur. Tout d'abord, vérifions que tout fonctionne correctement sur notre serveur local. Pour ce faire, accédez à votre navigateur Web et collez cette direction:
http://localhost:8000/
# Do you note that localhost and 127.0.0.1 are the same?
Si tout fonctionne correctement, vous devriez voir un beau modèle Django.
C'est tout à propos de notre installation Django.
Passons maintenant à exposer ce projet Django. Si vous travaillez sur un projet plus complexe, les méthodes suivantes d'exposition des applications Django fonctionneront également.
Exposing a Django app with Ngrok
Comme je l'ai déjà dit, Ngrok est l'un des outils qui nous permettra d'atterrir notre serveur local sur Internet. Alors tout d'abord Télécharger Ngrok du site officiel.
Une fois que vous l'avez installé, passons aux commandes nécessaires.
Ouvrez un autre shell, en gardant le terminal que votre serveur Django est actuellement en cours d'exécution, et tapez.
$ ngrok help
NAME:
ngrok - tunnel local ports to public URLs and inspect traffic
More commands ....
Cela vous donnera un aperçu rapide des commandes disponibles proposées par Ngrok et garantira également que le processus d'installation s'est déroulé correctement.
Afin de créer une URL où les gens peuvent accéder à notre serveur, exécutons.
$ ngrok http 8000
# secure public URL for port 8000 web server
Nous exécutons le http argument, pour créer une URL qui se connectera au port 8000 de notre hôte local.
Voici le résultat que vous obtiendrez probablement.
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
Comme il dit, Ngrok transfère cette URL étrange et laide, à notre localhost
. Mais la magie opère lorsque vous cliquez sur le navigateur avec l'URL que Ngrok vous a donnée.
Modification de settings.py
Wow, que vient de se passer 😱?
Il semble que Django lance une erreur à cause d'un Hôte non autorisé réglage. Si vous cochez le shell dans lequel vous exécutez le serveur Django et celui avec la session Ngrok, vous obtiendrez des messages de débogage.
# 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
Comme Django nous le dit, nous devons ajouter le domaine auquel nous nous connectons à la variable de configuration ALLOWED_HOSTS. Mais nous avons un problème, et c'est que le nom de domaine est trop volumineux et déroutant.
Modifions donc un peu les paramètres de Django, pour résoudre cette erreur. Ouvrez le settings.py fichier situé dans le dossier du projet.
# mytestingproject/settings.py
# Line 28
# Change from
ALLOWED_HOSTS = []
# To
ALLOWED_HOSTS = ["*"]
Si vous connaissez des expressions régulières, vous pouvez comprendre que nous définissons un caractère générique, où tous les hôtes seront autorisés.
Maintenant, rechargez le site et voyez le résultat.
Tout fonctionne parfaitement maintenant! Et si vous commencez à créer des applications pour le projet et à définir des URL et des vues, tout sera reflété sur cette URL publique.
Remarque : N'oubliez pas de changer ALLOWED_HOSTS
en production, car cela créerait une énorme faille de sécurité.
Conclusions
Dans ce didacticiel, vous avez appris à créer une URL de démonstration pour votre projet Django, sans avoir besoin de la déployer.
Vous vous êtes exercé à démarrer un projet Django et à travailler avec le settings.py
fichier dans Django.
Enfin, vous avez appris à utiliser Ngrok et à exposer n'importe quel serveur local avec lui.
Ensuite, explorez certains des frameworks Python populaires pour créer une API.