Bases & syntaxe
Installation
pip install django
Installe Django dans un environnement virtuel.
Création d'un projet
django-admin startproject monprojet
Crée un nouveau projet Django.
Création d'une application
python manage.py startapp maapp
Crée une nouvelle application Django.
Définition d'une vue
## views.py
from django.http import HttpResponse
def home(request):
return HttpResponse("Bonjour, Django!")
Définit une vue simple qui renvoie un message.
Structures de données
Modèles (Models)
## models.py
from django.db import models
class Article(models.Model):
titre = models.CharField(max_length=200)
contenu = models.TextField()
date_pub = models.DateTimeField('date published')
Définit un modèle pour une base de données.
Sérialisation (Serializers)
## serializers.py
from rest_framework import serializers
from .models import Article
class ArticleSerializer(serializers.ModelSerializer):
class Meta:
model = Article
fields = ['id', 'titre', 'contenu', 'date_pub']
Sérialise les données du modèle pour une API REST.
Fonctions & méthodes essentielles
Rendu de templates
## views.py
from django.shortcuts import render
def home(request):
return render(request, 'home.html')
Rend un template en réponse à une requête.
Redirects et renvois
## views.py
from django.shortcuts import redirect
def redirection(request):
return redirect('monapp:accueil')
Redirige vers une autre URL ou vue.
Patterns courants
Gestion des formulaires (Forms)
## forms.py
from django import forms
class ContactForm(forms.Form):
sujet = forms.CharField(max_length=100)
message = forms.CharField(widget=forms.Textarea)
envoyeur = forms.EmailField()
Définit un formulaire pour la collecte de données.
Gestion des médias (Media Files)
## settings.py
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
Configure le stockage et l'accès aux fichiers média.
Opérations avancées
Authentification
## views.py
from django.contrib.auth import authenticate, login
def user_login(request):
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
Gère l'authentification des utilisateurs.
Migrations
python manage.py makemigrations maapp
python manage.py migrate
Crée et applique les migrations de base de données.
Debugging & outils
Utilisation du debugger (pdb)
import pdb; pdb.set_trace()
Active le débogage à l'emplacement actuel du code.
Outils de surveillance (django-debug-toolbar)
pip install django-debug-toolbar
## settings.py
INSTALLED_APPS += ['debug_toolbar']
MIDDLEWARE += ['debug_toolbar.middleware.DebugToolbarMiddleware']
INTERNAL_IPS = ['127.0.0.1']
Ajoute des outils de surveillance et d'analyse au projet.
Journalisation (logging)
import logging
logger = logging.getLogger(__name__)
def my_view(request):
logger.info('Cette est une information')
Enregistre les messages de journal pour le débogage.