Django crée le premier projet

Dans ce chapitre, nous présenterons l'outil de gestion Django et comment utiliser Django pour créer des projets. Pour le premier projet, nous le nommons HelloWorld.

Notes de version de test :

  • Python 3.9.7

  • Django 4.2.7

Vous pouvez vérifier le numéro de version avec la commande suivante :

# python3 -V
Python 3.9.7
# python3 -m django --version
4.2.7

Outil de gestion Django

Après avoir installé Django, vous devriez maintenant avoir l'outil de gestion disponible.django-admin, si Windows n'a pas configuré les variables d'environnement, vous pouvez utiliserdjango-admin。

Jetons un coup d'œil à l'introduction des commandes django-admin :

$ django-admin

Type 'django-admin help <subcommand>' for help on a specific subcommand.

Available subcommands:

[django]
    check
    compilemessages
    createcachetable
    dbshell
    diffsettings
    dumpdata
    flush
    inspectdb
    loaddata
    makemessages
    makemigrations
    migrate
    runserver
    sendtestemail
    shell
    showmigrations
    sqlflush
    sqlmigrate
    sqlsequencereset
    squashmigrations
    startapp
    startproject
    test
    testserver
……省略部分……

Création du premier projet

Utilisez django-admin pour créer le projet HelloWorld :

django-admin startproject HelloWorld

Après la création, nous pouvons consulter la structure du répertoire du projet :

$ cd HelloWorld/
$ tree
HelloWorld/                  # 项目根目录
├── manage.py                # 项目管理脚本
├── db.sqlite3               # SQLite 数据库文件
├── __pycache__/             # Python 字节码缓存
└── HelloWorld/              # 项目配置目录(与项目同名)
    ├── __init__.py          # 包标识文件
    ├── settings.py          # 项目设置
    ├── urls.py             # 主路由配置
    ├── asgi.py             # ASGI 配置
    └── wsgi.py             # WSGI 配置

Répertoire racine du projet (HelloWorld/) :

Fichier/répertoireFonction
manage.pyPoint d'entrée de l'outil en ligne de commande Django, utilisé pour exécuter le serveur de développement, les migrations de base de données et d'autres opérations.
db.sqlite3Fichier de base de données SQLite (base de données par défaut, utilisée dans l'environnement de développement).
__pycache__/Répertoire de cache de bytecode Python (généré automatiquement, aucune modification manuelle nécessaire).

Répertoire de configuration principal du projet (HelloWorld/HelloWorld/) :

Fichier/répertoireFonction
__init__.pyFichier vide, indique à Python que ce répertoire est un paquet.
settings.pyFichier de configuration principal, comprenant :
- Paramètres de base de données (DATABASES)
- Chemins des fichiers statiques (STATIC_URL)
- Enregistrement des applications (INSTALLED_APPS)
- Mode débogage (DEBUG=True/False)
urls.pyFichier de configuration principal des routes, définit la relation de mappage entre les chemins URL et les vues.
asgi.pyConfiguration du serveur ASGI (utilisée pour les serveurs web asynchrones, tels que Daphne).
wsgi.pyConfiguration du serveur WSGI (pour les serveurs web traditionnels, tels que Gunicorn, uWSGI).

Ensuite, nous entrons dans le répertoire HelloWorld et exécutons la commande suivante pour démarrer le serveur :

python3 manage.py runserver 0.0.0.0:8000

0.0.0.0 permet à d'autres ordinateurs de se connecter au serveur de développement, et 8000 est le numéro de port. S'il n'est pas spécifié, le numéro de port par défaut est 8000.

Saisissez l'adresse IP de votre serveur dans le navigateur (ici, nous saisissons l'adresse IP locale :127.0.0.1:8000) et le numéro de port. S'il démarre normalement, la sortie est la suivante :

Explication détaillée des fichiers clés

1. settings.py (configuration principale)

Exemple

# Exemple d'extrait de HelloWorld/settings.py

# Avertissement de sécurité : DEBUG doit être désactivé en production !
DEBUG = True

# Noms de domaine autorisés (doivent être configurés lorsque DEBUG=False)
ALLOWED_HOSTS = []

# Applications Django enregistrées
INSTALLED_APPS = [
    'django.contrib.admin',  # Backend d'administration
    'django.contrib.auth',   # Système d'authentification
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',  # Gestion des fichiers statiques
]

# Configuration de la base de données (SQLite par défaut)
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',  # Chemin du fichier de base de données
    }
}

# URL des fichiers statiques (CSS/JS/images)
STATIC_URL = 'static/'

2. urls.py (configuration du routage)

Exemple

# Exemple de HelloWorld/urls.py

from django.contrib import admin
from django.urls import path

url = [
    path('admin/', admin.site.urls),  # Routes de gestion du backend
    # Vous pouvez ajouter des routes personnalisées ici, par exemple :
    # path('blog/', include('blog.urls')),
]

3. manage.py (script de gestion de projet)

Exemple

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "HelloWorld.settings")
    from django.core.management import execute_from_command_line
    execute_from_command_line(sys.argv)

Vues et configuration des URL

Dans le répertoire HelloWorld créé précédemment, créez un nouveau fichier views.py dans le répertoire HelloWorld et saisissez le code :

Code du fichier HelloWorld/HelloWorld/views.py :

from django.http import HttpResponse def hello(request): return HttpResponse("Bonjour le monde ! ")

Ensuite, liez l'URL à la fonction de vue. Ouvrez le fichier urls.py, supprimez le code d'origine, puis copiez et collez le code suivant dans le fichier urls.py :

Code du fichier HelloWorld/HelloWorld/urls.py :

from django.urls import path from . import views urlpatterns = [ path("", views.hello, name="hello"), ]

La structure complète du répertoire est la suivante :

$ tree
.
|-- HelloWorld
|   |-- __init__.py
|   |-- __init__.pyc
|   |-- settings.py
|   |-- settings.pyc
|   |-- urls.py              # url 配置
|   |-- urls.pyc
|   |-- views.py              # 添加的视图文件
|   |-- views.pyc             # 编译后的视图文件
|   |-- wsgi.py
|   `-- wsgi.pyc
`-- manage.py

Une fois terminé, démarrez le serveur de développement Django et accédez-y dans le navigateur. Ouvrez le navigateur et rendez-vous sur :

Nous pouvons également modifier les règles suivantes :

Code du fichier HelloWorld/HelloWorld/urls.py :

from django.urls import path from . import views urlpatterns = [ path('hello/', views.hello), ]

Ouvrez dans le navigateurhttp://127.0.0.1:8000/hello, et le résultat est le suivant :

Remarque :Si le code du projet est modifié, le serveur détectera automatiquement les modifications du code et rechargera automatiquement, donc si vous avez déjà démarré le serveur, vous n'avez pas besoin de le redémarrer manuellement.


Fonction path()

Django path() peut accepter quatre paramètres : deux paramètres obligatoires : route, view, et deux paramètres facultatifs : kwargs, name.

Syntaxe :
path(route, view, kwargs=None, name=None)
  • route:Une chaîne définissant la partie chemin de l'URL. Elle peut contenir des variables, par exemple<int:my_variable>, pour capturer les paramètres de l'URL et les transmettre à la fonction de vue.

  • view:Fonction de vue, gère les requêtes correspondant à la route donnée. Elle peut être une fonction ou une vue basée sur une classe.

  • kwargs (optionnel):Un dictionnaire contenant des arguments nommés supplémentaires transmis à la fonction de vue.

  • name (optionnel):Spécifie un nom unique pour la route URL afin qu'elle puisse être référencée ailleurs dans le code. Ceci est très utile pour générer des URL dans les gabarits ou effectuer des redirections dans le code.

Dans Django 2.0, la méthode re_path() peut être utilisée pour être compatible avec la méthodeurl(), et certaines règles d'expression régulière peuvent également être implémentées via re_path().

from django.urls import include, re_path

urlpatterns = [
    re_path(r'^index/$', views.index, name='index'),
    re_path(r'^bio/(?P<username>\w+)/$', views.bio, name='bio'),
    re_path(r'^weblog/', include('blog.urls')),
    ...
]
autres extensions