Actions

Cours

Différences entre versions de « Initiation à Django »

De GBLL, TAL, ALAO, etc.

Ligne 75 : Ligne 75 :
 
     return render(request, 'home.html')
 
     return render(request, 'home.html')
 
</syntaxhighlight>
 
</syntaxhighlight>
# Il ne reste qu'à indiquer à quelle url on veut afficher cette page, ici c'est une page d'accueil, donc à la racine : dans urls.py ajoutez :
+
# Il ne reste qu'à indiquer à quelle url on veut afficher cette page, ici c'est une page d'accueil, donc à la racine : dans urls.py ajoutez: <syntaxhighlight lang="python" highlight="1,5" style="border: 1px solid #dfdfdf;background-color:#f8f8f8;font-size: 90%;padding:10px">
<syntaxhighlight lang="python" highlight="1,5" style="border: 1px solid #dfdfdf;background-color:#f8f8f8;font-size: 90%;padding:10px">
 
 
from myApp import views as myApp
 
from myApp import views as myApp
  

Version du 26 octobre 2021 à 09:59

Django est un framework python qui vous permet de rapidement créer un site web, une application web ou une API.

[Site officiel de Django]

Création d'un environnement virtuel

Nous allons utiliser Django dans un environnement virtuel. Tous les modules que vous installerez pour ce projet ne seront donc pas installés sur votre ordinateur, mais seulement dans cet environnement virtuel. Cela permet de ne pas encombrer votre machine avec un tas de modules qui ne servent que sur quelques projets, et cela simplifie l'installation des dépendances sur un serveur distant.

Il existe plusieurs outils pour créer un environnement virtuel, nous allons utiliser pipenv.

  1. Installer pipenv sur votre machine : pip install pipenv ou python -m pip install pipenv. Vous pouvez utilisez également python3 ou pip3.
  2. Créez un répertoire où vous voulez sur votre machine, nous travaillerons dedans à partir de là :
    • mkdir monDossier
    • cd monDossier
  3. Initialisez un environnement virtuel dans ce dossier : pipenv shell ou python -m pipenv shell. C'est la commande pour activer l'environnement virtuel si il existe, sinon il le crée. Comme c'est la première fois ici, il le crée. Vous verrez le message suivant : Launching subshell in virtual environment.... Puis vous entrez automatiquement dans l'environnement.
    • Quand vous êtes dans un environnement virtuel, vous pouvez voir le nom de l'environnement entre parenthèses devant votre ligne de commande : (monDossier) sylvain@chistoyenebo:~/temp/monDossier$
  4. Pour sortir de l'environnement virtuel : exit ou ctrl+C.
  5. Pour entrer dans l'environnement virtuel : pipenv shell ou python -m pipenv shell
  6. Pour voir quels modules sont installés dans votre environnement : pip freeze. Si vous n'avez encore rien installé, il n'y a rien. Notez que tous les modules installés sur votre ordinateur sont accessibles depuis cet environnement (mais pas le contraire).

Premiers pas avec Django

Notez que tout ce qui suit peut être fait directement sur votre ordinateur, pas forcément dans un environnement virtuel. Mais je vous conseille de prendre l'habitude d'utiliser un environnement virtuel quand vous travaillez sur un projet avec pas mal de modules à installer.

Installer Django et initialiser un nouveau projet

  1. Une fois dans votre environnement virtuel, installez Django : pip install Django
  2. Initialisez un nouveau projet Django : django-admin startproject monProjet .. Un dossier de configuration a été créé, il contient le paramétrage de votre projet (notamment settings.py, urls.py), et un fichier manage.py se trouve à la racine de votre projet, c'est ce fichier qui contient la plupart des fonctions de Django qui permettrons de créer des apps, gérer les modèles, faire tourner le serveur etc.
  3. Vous pouvez d'ores et déjà lancer votre serveur : python manage.py runserver, et accéder à la page par défaut de Django (comme rien n'est encore écrit) en vous rendant à l'adresse http://127.0.0.1:8000/ ou http://localhost:8000/. Ctrl+C pour arrêter le serveur.

Créer une app

Votre projet Django peut contenir plusieurs apps (par exemple une pour gérer les pages du sites, une autre pour gérer les utilisateurs (authentification, mails etc.), une API requêtable par d'autres programmes etc.). Dans ce cours, on va en créer une seule, ça suffira.

  1. Créer une nouvelle app (ex. "myApp"): à la racine de votre projet (là où il y a manage.py) python manage.py startapp myApp
  2. Ajouter l'application à votre projet : dans le dossier du projet, ouvrez settings.py et ajoutez votre app dans INSTALLED_APPS (ici, 'monAppli').
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myApp',
]

Vous trouverez un nouveau répertoire avec les fichiers de votre app, notamment views.py où on écrira les différentes actions à faire en fonction des requêtes ; ou encore models.py où on définira nos classes d'objets.

Créer les répertoires "templates" pour vos html et "static" pour vos css, js, images...

  • Nous allons ranger tous les fichiers html dans un répertoire appelé "templates". Créez-le à la racine du projet, puis éditez le fichier settings.py (dans le dossier de paramétrage du projet) : ajoutez import os au début du fichier, puis complétez TEMPLATES le chemin vers templates :
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
        ...
  • Tous les fichiers css, js, les images et autres média seront quant à eux stockés dans un répertoire appelé "static". Comme pour templates, créez ce répertoire à la racine du projet, puis éditez settings.py :
STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]


À ce stade, le paramétrage minimum est fait, il ne vous reste plus qu'à créer des views (actions du serveur) et des templates (affichage pour le client), et à appeler ces views dans urls.py.

Première view

On va commencer par afficher une page html en page d'accueil de notre site.

  1. Créer un template html qui nous servira de page d'accueil. Dans templates/, créez un fichier home.html et mettez du contenu html temporaire dedans (ex. <h1>Bienvenu !</h1>).
  2. Dans views.py, définissez une nouvelle view qui affichera simplement ce template :
    def home(request):
        return render(request, 'home.html')
    
  3. Il ne reste qu'à indiquer à quelle url on veut afficher cette page, ici c'est une page d'accueil, donc à la racine : dans urls.py ajoutez:
    from myApp import views as myApp
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('', myApp.home),
    ]