Principes fondamentaux des frameworks Web

Toute application Web repose sur une architecture client-serveur, où le navigateur agit comme un client et le serveur écoute les connexions. Ce principe de base permet de construire des frameworks Web personnalisés. Le protocole HTTP définit le format de communication entre client et serveur, garantissant une interaction standardisée.

Exemple simple d'un serveur Web basique

import socket

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind(('localhost', 8000)) server_socket.listen(5)

while True: client_conn, address = server_socket.accept() request_data = client_conn.recv(1024) response_header = b"HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\n" client_conn.send(response_header + b"Bonjour, client!") client_conn.close()


</div>Le protocole HTTP structure les requêtes et réponses avec des en-têtes et un corps optionnel. Une requête GET typique contient la méthode, le chemin et les en-têtes. Le serveur répond avec un statut, des en-têtes et le contenu demandé.

Séparation serveur et application
---------------------------------

Dans le développement Web Python, on distingue le programme serveur, qui gère les connexions réseau, et l'application, qui contient la logique métier. Les frameworks comme Django ou Flask simplifient la création d'applications. L'interface WSGI (Web Server Gateway Interface) standardise l'interaction entre serveurs et applications, permettant une indépendance mutuelle. Des serveurs WSGI courants incluent Gunicorn et le module wsgiref intégré à Python.

<div>```

from wsgiref.simple_server import make_server

def application(environ, start_response):
    path = environ.get('PATH_INFO', '/')
    if path == '/':
        status = '200 OK'
        headers = [('Content-Type', 'text/html; charset=utf-8')]
        start_response(status, headers)
        return [b"<html><body><h1>Page d'accueil</h1></body></html>"]
    else:
        status = '404 Not Found'
        headers = [('Content-Type', 'text/plain')]
        start_response(status, headers)
        return [b"Page non trouvée"]

server = make_server('localhost', 8080, application)
print("Serveur démarré sur le port 8080")
server.serve_forever()

Django est un framework Web Python qui fournit une structure complète pour développer des applications robustes. Il gère le routage, les modèles de données, les templates et bien plus. L'installation se fait via pip, et la création d'un projet utilise des commandes intégrées.

Installation de Django

pip install django

Création d'un projet

django-admin startproject mon_projet


</div>La structure d'un projet Django inclut des fichiers de configuration, de routage et de gestion. Les templates HTML permettent de générer des pages dynamiques, et les fichiers statiques (CSS, JavaScript) sont servis séparément. Pour les tests initiaux, il peut être utile de désactiver temporairement le middleware CSRF.

Composants essentiels de Django
-------------------------------

Django offre trois fonctions de réponse principales pour les vues :

- **HttpResponse** : renvoie une réponse HTTP avec un contenu texte ou binaire.
- **render** : fusionne un template avec des données et renvoie la réponse HTML générée.
- **redirect** : redirige l'utilisateur vers une autre URL.

<div>```

from django.shortcuts import HttpResponse, render, redirect

def accueil(request):
    return HttpResponse("Bienvenue sur le site!")

def page_profil(request):
    contexte = {'nom': 'Alice', 'interets': ['lecture', 'musique']}
    return render(request, 'profil.html', contexte)

def changer_langue(request):
    return redirect('/langue/choisie/')

La redirection HTTP est un mécanisme pour envoyer l'utilisateur d'une URL à une autre. Le serveur renvoie un code de statut spécifique (comme 302 ou 301) avec l'URL de destination dans l'en-tête Location. Cela permet de gérer les modifications d'URL ou les authentifications de manière transparente.

Étiquettes: Django Python WSGI HTTP redirection

Publié le 4 juin à 19h30