Introduction
Dans ce tutoriel, nous allons vous guider dans la création d'une application de sondage de base.
💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici
Dans ce tutoriel, nous allons vous guider dans la création d'une application de sondage de base.
Apprenons par l'exemple.
Dans tout ce tutoriel, nous allons vous guider dans la création d'une application de sondage de base.
Elle se compose de deux parties :
Nous supposerons que vous avez déjà installé Django. Vous pouvez vérifier si Django est installé et quelle est sa version en exécutant la commande suivante dans une invite de commande :
python -m django --version
Si Django est installé, vous devriez voir la version de votre installation. Sinon, vous obtiendrez une erreur indiquant "Aucun module nommé django".
Ce tutoriel est écrit pour Django, qui prend en charge Python 3.10 et versions ultérieures. Si la version de Django ne correspond pas, vous pouvez vous référer au tutoriel pour votre version de Django en utilisant le sélecteur de versions dans le coin inférieur droit de cette page, ou mettre à jour Django vers la version la plus récente.
Si c'est la première fois que vous utilisez Django, vous devrez prendre soin de certaines configurations initiales. Plus précisément, vous devrez générer automatiquement du code qui établit un projet
Django - une collection de paramètres pour une instance de Django, y compris la configuration de la base de données, les options spécifiques à Django et les paramètres spécifiques à l'application.
À partir de la ligne de commande, utilisez cd
pour accéder au répertoire où vous souhaitez stocker votre code, puis exécutez la commande suivante :
cd ~/project
django-admin startproject mysite
Cela créera un répertoire mysite
dans votre répertoire actuel.
Regardons ce que startproject
a créé :
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
Ces fichiers sont :
mysite/
est un conteneur pour votre projet. Son nom n'a pas d'importance pour Django ; vous pouvez le renommer comme vous le souhaitez.manage.py
: Une utilité de ligne de commande qui vous permet d'interagir avec ce projet Django de diverses manières.mysite/
est le véritable package Python pour votre projet. Son nom est le nom de package Python que vous devrez utiliser pour importer tout ce qui se trouve à l'intérieur (par exemple mysite.urls
).mysite/__init__.py
: Un fichier vide qui indique à Python que ce répertoire devrait être considéré comme un package Python.mysite/settings.py
: Paramètres/configuration pour ce projet Django.mysite/urls.py
: Les déclarations d'URL pour ce projet Django ; une "table des matières" de votre site alimenté par Django.mysite/asgi.py
: Un point d'entrée pour les serveurs web compatibles ASGI pour héberger votre projet.mysite/wsgi.py
: Un point d'entrée pour les serveurs web compatibles WSGI pour héberger votre projet.Vérifions que votre projet Django fonctionne. Si vous ne l'avez pas déjà fait, accédez au répertoire externe mysite
et exécutez les commandes suivantes :
cd ~/project/mysite
python manage.py runserver
Vous verrez la sortie suivante sur la ligne de commande :
Performing system checks...
System check identified no issues (0 silenced).
You have unapplied migrations; your app may not work properly until they are applied. Run 'python manage.py migrate' to apply them.
- 15:50:53 Django version, using settings'mysite.settings' Starting development server at <http://127.0.0.1:8000/> Quit the server with CONTROL-C.
Ignorez le message d'avertissement concernant les migrations de base de données non appliquées pour l'instant ; nous en reparlerons bientôt.
Vous avez démarré le serveur de développement Django, un serveur web léger écrit entièrement en Python. Nous l'avons inclus avec Django pour que vous puissiez développer rapidement, sans avoir à vous occuper de la configuration d'un serveur de production - tel qu'Apache - jusqu'à ce que vous soyez prêt pour la production.
C'est le moment de noter : ne pas utiliser ce serveur dans un environnement ressemblant à un environnement de production. Il est destiné uniquement à l'utilisation pendant le développement. (Nous sommes dans l'affaire de création de frameworks web, pas de serveurs web.)
Maintenant que le serveur est en cours d'exécution, accédez à http://127.0.0.1:8000/ avec votre navigateur web. Ou, exécutez curl 127.0.0.1:8000
dans le terminal. Vous verrez une page "Félicitations!", avec une fusée qui décoll. Ça a fonctionné!
Dans la machine virtuelle LabEx, nous devons ajouter le domaine LabEx à ALLOWED_HOSTS
. Éditez mysite/settings.py
et ajoutez *
à la fin de ALLOWED_HOSTS
, de sorte qu'il ressemble à ceci :
ALLOWED_HOSTS = ["*"]
Cela indique à Django qu'il est autorisé à traiter les requêtes avec n'importe quel en-tête d'hôte.
Par défaut, la commande runserver
lance le serveur de développement sur l'adresse IP interne au port 8000.
Si vous voulez changer le port du serveur, passez-le en tant qu'argument de ligne de commande. Par exemple, cette commande lance le serveur sur le port 8080 :
python manage.py runserver 8080
Si vous voulez changer l'adresse IP du serveur, passez-la avec le port. Par exemple, pour écouter sur toutes les adresses IP publiques disponibles (ce qui est utile si vous exécutez Vagrant ou si vous voulez montrer votre travail sur d'autres ordinateurs du réseau), utilisez :
python manage.py runserver 0.0.0.0:8080
Maintenant, basculez sur l'onglet Web 8080 dans la machine virtuelle LabEx et vous verrez la même page "Félicitations".
Les documents complets pour le serveur de développement sont disponibles dans la référence runserver
.
Rechargement automatique de
runserver
Le serveur de développement recharge automatiquement le code Python pour chaque requête selon les besoins. Vous n'avez pas besoin de redémarrer le serveur pour que les modifications de code prennent effet. Cependant, certaines actions comme l'ajout de fichiers ne déclenchent pas un redémarrage, donc vous devrez redémarrer le serveur dans ces cas.
Maintenant que votre environnement - un "projet" - est configuré, vous êtes prêt à commencer à travailler.
Chaque application que vous écrivez dans Django est composée d'un package Python qui suit une certaine convention. Django est livré avec une utilité qui génère automatiquement la structure de répertoires de base d'une application, de sorte que vous pouvez vous concentrer sur l'écriture de code plutôt que sur la création de répertoires.
Projets vs. applications
Quelle est la différence entre un projet et une application? Une application est une application web qui fait quelque chose - par exemple, un système de blog, une base de données de registres publics ou une petite application de sondage. Un projet est une collection de configurations et d'applications pour un site web particulier. Un projet peut contenir plusieurs applications. Une application peut être incluse dans plusieurs projets.
Vos applications peuvent se trouver n'importe où sur votre Python path <tut-searchpath>
. Dans ce tutoriel, nous allons créer notre application de sondage dans le même répertoire que votre fichier manage.py
afin qu'elle puisse être importée comme un module de niveau supérieur autonome, plutôt qu'un sous-module de mysite
.
Pour créer votre application, assurez-vous d'être dans le même répertoire que manage.py
et tapez cette commande :
cd ~/project/mysite
python manage.py startapp polls
Cela créera un répertoire polls
, qui est structuré comme suit :
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
Cette structure de répertoires contiendra l'application de sondage.
Écrivons la première vue. Ouvrez le fichier polls/views.py
et mettez le code Python suivant dedans :
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
C'est la vue la plus simple possible en Django. Pour appeler la vue, nous devons la mapper à une URL - et pour cela, nous avons besoin d'une configuration d'URL (URLconf).
Pour créer une URLconf dans le répertoire polls, créez un fichier appelé urls.py
. Votre structure de répertoires d'application devrait maintenant ressembler à ceci :
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
urls.py
views.py
Dans le fichier polls/urls.py
, incluez le code suivant :
from django.urls import path
from. import views
urlpatterns = [
path("", views.index, name="index"),
]
L'étape suivante consiste à pointer la configuration d'URL racine vers le module polls.urls
. Dans mysite/urls.py
, ajoutez une importation pour django.urls.include
et insérez un ~django.urls.include
dans la liste urlpatterns
, de sorte que vous obtenez :
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path("polls/", include("polls.urls")),
path("admin/", admin.site.urls),
]
La fonction ~django.urls.include
permet de référencer d'autres configurations d'URL.每当 Django 遇到 ~django.urls.include
时,它会截断到该点为止匹配的 URL 的任何部分,并将剩余的字符串发送到包含的 URLconf 进行进一步处理。
L'idée derrière ~django.urls.include
est de faciliter l'utilisation des URLs en les connectant facilement. Étant donné que les sondages sont dans leur propre configuration d'URL (polls/urls.py
), ils peuvent être placés sous "/polls/", ou sous "/fun_polls/", ou sous "/content/polls/", ou n'importe quel autre chemin racine, et l'application fonctionnera toujours.
Quand utiliser
~django.urls.include()
Vous devriez toujours utiliserinclude()
lorsque vous incluez d'autres modèles d'URL.admin.site.urls
est l'unique exception à cela.
Vous avez maintenant connecté une vue index
à la configuration d'URL. Vérifiez que cela fonctionne avec la commande suivante :
python manage.py runserver 0.0.0.0:8080
Accédez à <http://index
.
La fonction ~django.urls.path
est passée quatre arguments, deux requis : route
et view
, et deux optionnels : kwargs
et name
. À ce stade, il est utile de réviser à quoi servent ces arguments.
~django.urls.path
: route
route
est une chaîne de caractères qui contient un modèle d'URL. Lorsqu'il traite une requête, Django commence par le premier modèle dans urlpatterns
et parcourt la liste, comparant l'URL demandée avec chaque modèle jusqu'à ce qu'il trouve un qui correspond.
Les modèles ne cherchent pas les paramètres GET et POST, ni le nom de domaine. Par exemple, dans une requête à https://www.example.com/myapp/
, la configuration d'URL cherchera myapp/
. Dans une requête à https://www.example.com/myapp/?page=3
, la configuration d'URL cherchera également myapp/
.
~django.urls.path
: view
Lorsque Django trouve un modèle correspondant, il appelle la fonction de vue spécifiée avec un objet ~django.http.HttpRequest
en tant que premier argument et toutes les valeurs "capturées" à partir de la route en tant qu'arguments nommés. Nous donnerons un exemple de cela un peu plus loin.
~django.urls.path
: kwargs
Des arguments nommés arbitraires peuvent être passés dans un dictionnaire à la vue cible. Nous n'allons pas utiliser cette fonctionnalité de Django dans le tutoriel.
~django.urls.path
: name
Donner un nom à votre URL vous permet de vous y référer de manière non ambiguë d'autres parties de Django, en particulier à partir de templates. Cette fonction puissante vous permet de modifier globalement les modèles d'URL de votre projet tout en ne touchant qu'un seul fichier.
Félicitations! Vous avez terminé le laboratoire de création d'une application de sondage de base. Vous pouvez pratiquer d'autres laboratoires dans LabEx pour améliorer vos compétences.