Académique Documents
Professionnel Documents
Culture Documents
Enseignantes :
Naima Halouani & Hounaida Moalla
Plan
Introduction
Arborescence de templates
Utilisation de Bootstrap
2
Introduction
Les programmeurs Python s’intéressent aux Modèles et
Vues.
les graphistes se concentrent sur les Templates.
Serveur
1
(Django)
contenu du
serveur
2 URLs
(application)
URLs .....
(projet) ..... 4
3,1
..... 3 .....
.....
..... 3,
2
VIEWs
..... 5 TEMPLATE
..... </>
.....
templates
Tous les templates d’une application doivent
être regroupés dans un seul emplacement.
nom_appl
...
Ajouter manuellement un répertoire
« templates/nom_appl » dans lequel views
seront regroupés tous les templates de
l’application. nom_projet
settings
urls
NB : Pour ajouter des templates au projet, il faut ...
créer le répertoire « templates » sous le
répertoire racine du projet. db.sqlite3
manage.py
templates
def index(request):
template=loader.get_template('magasin/
index.html')
Le module return HttpResponse(template.render())
django.template.loader fournit des fonctions telles que
get_template() pour le chargement de templates ;
la classe HttpResponse est la classe qui s’occupe des requêtes http ;
index(request) est la méthode qui s’occupe de l’affichage du résultat ;
return permet de renvoyer dans la réponse de la requête l’affichage du résultat ;
render() indique le rendu du template : elle permet de construire la réponse
HTML en fonction d’un fichier template et éventuellement de variables.
Cours Python Avancé 9
Les Gabarits
Un gabarit est un fichier texte.
Il peut générer tout format basé sur du texte (HTML, XML, CSV, etc.).
Un gabarit contient :
- des variables qui sont remplacées par des valeurs lorsque le gabarit
est évalué,
- ainsi que des balises qui contrôlent la logique du gabarit.
Etape 1 : Dans un projet, on pourra avoir besoin d’afficher des variables python
dans un contenu html.
Etape 2 :
Tester.
Parfois, nous avons besoin d’afficher la liste des enregistrements d’une table.
urlpatterns = [ urls.py
path('', views.mes_articles,name=‘articles’),
]
Parfois, pour des variables composées, nous aurons besoin d’une boucle ou
d’une structure de contrôle pour afficher le contenu d’une variable de template.
Etape 2 : Pour afficher toutes les données du dictionnaire dans le template,
nous aurons besoin d’une boucle for :
<div class="container"> mes_articles.html
<div class='row'>
<div class="col-md-12 text-center">
<h2>Mes articles...... </h2>
</div>
<div class="col-md-12">
<!--<h2>{{liste}}</h2> -->
{% for elet in liste %}
15
{{ elet }} <br/>
{% endfor %}
</div>
</div>
</div>
Cours Python Avancé
Les GabaritsLes balises (3)
Nous pourrons aussi afficher le produit s’il est cher ou non selon son prix > ou <
1000 :
...
{% for elet in liste %}
{% if elet.prix <1000 %}
{{elet}}
le prix est {{elet.prix}} : pas cher
{% else %}
{{elet}}
le prix est {{elet.prix}} : très cher
Cours Python Avancé 17
{% endif %}
{% endfor %}
Les fichiers statiques
Les sites Web peuvent afficher des fichiers nom_appl
supplémentaires tels que des images, du admin
JavaScript ou du CSS.
models
urls
Dans Django, ces fichiers sont
appelés « fichiers statiques ». static
...
urls
↪ Sous ce répertoire, on pourra créer plusieurs
autres sous répertoires (à titre organisationnel) ...
css, js, img, ... pour y mettre nos fichiers statiques db.sqlite3
de différents types.
manage.py
Cours Python Avancé 18
Les fichiers statiques
Dans le fichier setting.py, il doit exister par défaut une rubrique STATIC_URL qui
contient par défaut ‘/static/’ et une rubrique INSTALLED_APPS qui contient
l’application “django.contrib.staticfiles’.
... setting.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'catalogue',
]
...
STATIC_URL = '/static/'
STATIC_URL indique l’URL du dossier depuis lequel vos fichiers statiques
seront accessibles.
Cours Python Avancé 19
Les fichiers statiques
Si les fichiers statiques sont mis dans le dossier nom_appl
racine, ils ne seront pas spécifiques à une admin
application particulière.
models
nom_projet
STATICFILES_DIRS=[ settings.py
os.path.join(BASE_DIR,'static'), settings
] urls
...
Ça permet de renseigner le chemin du dossier
‘static’ sur le disque dur et lui assigner un préfixe static
d’URL dans le settings.py. db.sqlite3
manage.py
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<meta http-equiv='X-UA-Compatible' content='IE=edge'>
body{ index.css
background-color: red;
}
Les balises <header> et <footer> permettent d’afficher leur
contenu sur toutes les pages.
la balise block définit 3 blocs que les gabarits enfants peuvent
remplir.
↪ La balise block ne fait que signaler au moteur de gabarits
qu’un gabarit enfant peut surcharger ces portions du gabarit.
{% block content %}
<div class="col-md-12 text-center">
<h2>Liste de Produits : </h2>
</div>
{% include 'navbar.html' %}
{% block content %} {% endblock content%}
</body>
</html>
{% include ‘…’ %} :
‘base.html’
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1"
crossorigin="anonymous">
NB : vous pouvez aussi ajouter d’autres références bootstrap telles que JS,
Navbar, ...
Si vous tester votre site, vous trouverez l’utilisation du css pour changer la
police d’affichage et/ou l’ajout de la barre de menu,
Maintenant, nous pouvons ajouter des divisions dans notre site pour bien
placer les éléments de la page.
{% block body %}
<div class=container>
<div class=”row”>
<div class=”col”>
<l1> Index </l1>
<p> bien venue
</p>
</div>
</div>
<h1>Index.....</h1>
</div>
NB : Pour une{% endblock %}
présentation plus ergonomique, nous pourrons utiliser les
grilles proposées par bootstrap.