Le Web est basé sur trois piliers :
Les liens hypertextes sur lesquels on peut cliquer et leur protocole (HTTP)
le système d'adresses (URL)
le langage de construction des pages (HTML)
Le Web englobe les sites qui peuvent être consultés dans un navigateur, et n'est qu'une des briques de l'Internet
Parmi les autres :
le courrier électronique
les applications mobiles
etc.
source:
Un site Web consiste :
- en un ensemble de fichiers sauvegardés sur un disque dur
- contenant du code informatique appelé HTML.
- il est nécessaire d'avoir un navigateurs web (comme Chrome, Safari, Firefox, etc.) pour lire le contenu d'un site web
- les sites sont stockés sur des serveurs accessibles via le réseau internet grâce à leur adresse IP (Internet Protocol)
Origines d'Internet
InterNet = Interconnected Network
Fonctionnement d'Internet
--> fonctionnement proche du courrier postal!
Le protocole http
HTTP = Hyper Text Transfer Protocol : protocole d'échange "hyper texte"
Les URL
URL = Universal Resource Locator
http://mon.adresse.com/mon_site.php?nom=Pignon&prenom=Francois
A D R E S S E RESSOURCE V A R I A B L E S
Une URL est une adresse web. Vous pouvez voir une URL chaque fois que vous visitez un site web. Elle est visible dans la barre d'adresse de votre navigateur.
Le HTML
HTML = HyperTexte Markup Language
Le HTML est un code :
But de ce langage : produire des documents consultables à distance par de navigateurs Web
Un système de balises ("Markups") permet de décrire la mise en forme du document
Possibilité de définir des liens hypertexte : chaque lien permet d'accéder à de nouveaux documents
Possibilité de définir des formulaires qui permettent à l'utilisateur d'envoyer des informations vers le serveur
Un document HTML contient deux parties :
L'en-tête, qui contient des contient des informations relatives à l'auteur et au contenu du document
Balise <HEAD>
Le corps, qui contient le texte et les médias à afficher, avec des indications de mise en page
Balise <BODY>
<!DOCTYPE html>
<html>
<head>
<title>Exemple de fichier HTML valide</title>
</head>
<body>
<p> Un texte normal <br/> <em> italique </em>
<ul>
<li>un élément de liste</li>
<li><strong>du gras</strong></li>
</ul>
</p>
</body>
</html>Structure d'une page html 5
De nombreuses ressources web sont disponibles pour apprendre le HTML, voir par exemple
Balises de formatage
<h1>Titre 1</h1> pour vos titres les plus importants<h2>Titre 2</h2> pour les sous-titres<h3>Titre 3</h3> ... et ainsi de suite jusqu'à <h6><p>Un paragraphe contenant du texte</p><em>texte</em> permet de mettre l'accent sur une partie du texte<strong>texte</strong> permet de mettre encore plus l'accent sur une partie de texte<br> permet d'insérer un saut de ligne (vous ne pouvez rien mettre à l'intérieur d'un élément br et il n'y a pas de balise fermante)<a href="https://djangogirls.org">link</a> permet de créer un lien<ul><li>premier item</li><li>second item</li></ul> permet de créer des listes, comme celle que nous sommes en train de faire !Balises de mise en page
<div></div> permet de créer une section au sein de la page<nav></nav> définit un ensemble de liens de navigation<article></article> spécifie du contenu indépendant et autonome<section></section> définit une section dans un document<header></header> spécifie un en-tête pour un document ou une section<main></main> spécifie le contenu principal d'un document<aside></aside> définit du contenu en dehors du contenu dans lequel il est placé (comme une barre latérale)<footer></footer> définit un pied de page pour un document ou une section<time></time> définit un instant spécifique (ou un horodatage)côté client :
construction de l'arbre DOM ⇒ bloc = objet
affichage (flux)
Les feuilles de style (CSS : Cascading Style Sheets) sont un langage utilisé pour décrire l'apparence et la disposition d'un site écrit en langage de balisage (comme HTML).
Exemples de CSS
body {
padding-left: 15px;
}
h1 a, h2 a {
color: #C25100;
font-family: 'Lobster';
}
em {
background‐color: black;
color: red;
}
p {
text-align: center;
}
modification du DOM selon les événements produits par l'utilisateur
3 langages sont nécessaires pour réaliser ce schéma:
Les seuls langages compréhensibles pour le navigateur sont HTML et CSS et Javascript
agrémenté de différentes librairies de mise en forme:
Langage javacript
But:
Attention :
voir : https://jquery.com/
exemple : https://jqueryui.com/accordion/
HTML :
CSS :
javascript :
Text
Résumé
principe général : consultation/mise à jour à distance d'une base de données.
CRUD : Create / Read / Update / Delete
réponse = données mises en forme au niveau du serveur
Mise en oeuvre
3 niveaux d'interprétation sont nécessaires pour réaliser ce schéma:
Les seuls langages compréhensibles pour le navigateur sont HTML et CSS et Javascript
Un langage de développement interprété côté serveur
Le choix est vaste (n'importe quel langage de programmation)
Les plus courants sont (par ordre de popularité):
PHP
Java (avec la librairie Spring MVC)
Python (avec la librairie Django)
Javascript (librairie Node.js)
etc.
Un langage de requêtes (interprété côté serveur) pour communiquer avec la base de données et enregistrer les mise à jour
Transmission des données
Variables GET :
Les variables sont inscrites dans l'URL transmise au serveur:
http://mon.adresse.com/mon_site.php?nom=Pignon&prenom=Francois
A D R E S S E RESSOURCE V A R I A B L E S
Le serveur exécute le script (php, python, java, …), c'est à dire :
traite les variables
exécute des opérations de lecture/écriture
transmet un contenu au client (en général html mais aussi xml ou json…)
Transmission des données
Variables POST (n'apparaissent pas dans l'URL)
utilisation de Formulaires HTML :
le fichier cible est défini comme attribut du formulaire :
INPUT définissent les variables à transmettre:'INPUT de type submit lance la requête : la page cible est chargée et remplace la page courante:<FORM method="post" action="cible.php">
...
</FORM><form method ="post" action = "bonjour.php" >
Votre nom : <input type="text" name="nom"/> <br/>
Votre prénom : <input type="text" name="prenom"/> <br/>
<input type="submit" value="Envoyer">
</form>Le web dynamique repose sur :
des données mises à jour en continu
stockées dans une base de données
et manipulées côté serveur
Mise en œuvre :
Node.js + Express (backend léger, moderne)
MongoDB + Mongoose (ORM / ODM orienté documents)
Python + Django
Java + Hibernate + Spring MVC
Le patron MVC reste la référence pour organiser les applications Web modernes.
Dans l’écosystème JavaScript, on retrouve cette structure dans Express (routes = contrôleurs, modèles = Mongoose, vues = templates ou API JSON).
Pour une comparaison utile : le tutoriel Django reste un bon point de repère pédagogique 1871426-le-fonctionnement-de-django
Modèle - Vue - Contrôleur
Django (/ˈdʒæŋɡoʊ/ jang-goh) est un framework web gratuit et open-source écrit en Python.
Un framework web est un ensemble de composants prêts à l'emploi qui vous aide à développer des sites web plus rapidement et plus facilement.
Lorsque vous créez un site web, vous avez souvent besoin de la même chose :
Fonctionnement de Django
Django gère lui-même la partie contrôleur (gestion des requêtes du client, des droits sur les actions…).
Concrètement, lorsque l'internaute appelle une page, la vue récupère les données du modèle et génère un rendu HTML à partir du template et de ces données.
Un template est un fichier HTML, aussi appelé en français « gabarit ». Il sera récupéré par la vue et envoyé au visiteur ; avant d'être envoyé, il sera analysé et "complété" avec les données provenant du modèle.
On distingue les quatre parties qu'un développeur doit gérer :
Développement d'un site en Django
Les modèles dans Django
Un modèle Django est essentiellement un schéma de données
base de données. from django.db import models
class Equipement(models.Model):
id_equip = models.CharField(max_length=100, primary_key=True)
disponibilite = models.CharField(max_length=20)
photo = models.CharField(max_length=200)
def __str__(self):
return self.id_equip
class Animal(models.Model):
id_animal = models.CharField(max_length=100, primary_key=True)
etat = models.CharField(max_length=20)
type = models.CharField(max_length=20)
race = models.CharField(max_length=20)
photo = models.CharField(max_length=200)
lieu = models.ForeignKey(Equipement, on_delete=models.CASCADE)
def __str__(self):
return self.id_animalLa gestion des urls
Il faut renseigner une liste de modèles d'url (urlpatterns) pour faire correspondre les URL et les vues.
Django vérifie dans l'ordre les modèles d'url, et si correspondance il y a, alors il transmet la requête à la fonction associée (appelé vue).
from django.urls import path
from . import views
urlpatterns = [
path('', views.animal_list, name='animal_list'),
path('animal/<str:id_animal>/', views.animal_detail, name='animal_detail'),
path('animal/<str:id_animal>/?<str:message>', views.animal_detail, name='animal_detail_mes'),
]Vue
La vue contient toute la partie "logique" de notre application. C'est elle qui va se charger d'aller chercher les informations liées à notre modèle et de les passer à un template
from django.shortcuts import render, get_object_or_404, redirect
from .forms import MoveForm
from .models import Animal, Equipement
# Create your views here.
def animal_list(request):
animals = Animal.objects.filter()
return render(request, 'animalerie/animal_list.html', {'animals': animals})
def animal_detail(request, id_animal):
animal = get_object_or_404(Animal, id_animal=id_animal)
lieu = animal.lieu
form=MoveForm()
return render(request,
'animalerie/animal_detail.html',
{'animal': animal, 'lieu': lieu, 'form': form})Template
Les Balises de template Django permettent de transferer des variables Python dans du HTML
Pour insérer une variable dans un template, on utilise des doubles accolades avec le nom de la variable.
<header>
<h1><a href="/">Animalerie</a></h1>
</header>
{% for animal in animals %}
<article>
<h2><a href="">{{ animal.id_animal }}</a></h2>
<p>{{ animal.etat }}</p>
<p>{{ animal.lieu }}</p>
</article>
{% endfor %}