Cours - WordPress.com

publicité
Cours sur Django
Ce cours sur Django vous permettra de concevoir votre propre page web grâce à Python, de
découvrir les avantages d’un framework ainsi l’utilité de django dans l’utilisation et la gestion
d’une page. Si jamais mes explications ne suffisent pas, rendez-vous sur le site officiel de Django :
https://www.djangoproject.com/
I.
Django et les frameworks.
1) Qu’est-ce qu’un Framework ?
Un Framework ou littéralement « Cadre de travail » permet à un
développeur de travailler plus aisément grâce à des outils
supplémentaires. Ce n’est donc pas quelque chose d’obligatoire pour
pouvoir programmer mais cela aide grandement. Dans le fond, il s’agit
pour le développeur d’utiliser plusieurs bibliothèques mises à disposition
pour ne pas avoir à réécrire du code par exemple. C’est aussi un outil
utile pour la transmission, votre travail sera mieux structuré et vous
pourrez facilement transmettre votre projet à quelqu’un d’autre.
2) Qu’est-ce que Django ?
Django est un framework Python dont l’utilisation est destinée au web.
Pour information, il a été créé en 2003 et est aujourd’hui utilisé par des
sites comme Instagram ou la NASA. Son succès est principalement due
au fait qu’il est open source et donc, modifiable par tous. Son succès
revient à sa devise : « Don't repeat yourself ».
1/
Nicolas.F
II.
Le fonctionnement de Django
1) En théorie
Django possède un modèle différent de l’architecture MVC
(Modèle-Vue-Contrôleur, il s’agit ici d’un modèle classique utilisé par
la plus part des pages web permettant au développeur de fournir
une interface graphique et des services classique à u utilisateur ainsi
que d’accéder aux données) ce représentant comme tel :
Django possède quant à lui une interface MVT (Modèle-Vue-Template).
Cette architecture reprend les définitions de modèle et de vue que
nous avons vues, et en introduit une nouvelle : le template (voir figure
suivante). Un template est un fichier HTML, aussi appelé en français «
gabarit ». Il sera récupéré par la vue et envoyé au visiteur ; cependant,
avant d'être envoyé, il sera analysé et exécuté par le framework,
comme s'il s'agissait d'un fichier avec du code. Django fournit un
moteur de templates très utile qui permet, dans le code HTML,
d'afficher des variables, d'utiliser des structures conditionnelles (if/else)
ou encore des boucles (for), etc. Voici son modèle :
2/
Nicolas.F
A savoir:
Le modèle représente une information enregistrée en général dans une base
de données. Il permet d'accéder à l'information, de la modifier, d'en ajouter
une nouvelle, de la mettre à jour, etc.
La vue n’est autre que la visualisation de l'information. C'est la seule chose
que l'utilisateur peut voir. Non seulement elle sert à présenter une donnée,
mais elle permet aussi de recueillir une éventuelle action de l'utilisateur (un
clic sur un lien, ou la soumission d'un formulaire par exemple). Typiquement,
un exemple de vue est une page web, ni plus, ni moins.
Le contrôleur prend en charge tous les événements de l'utilisateur (accès à
une page, soumission d'un formulaire, etc.). Il se charge de récupérer les
données voulues dans les modèles. Après un éventuel traitement sur ces
données, il transmet ces données à la vue, afin qu'elle s'occupe de les
afficher. Lors de l'appel d'une page, c'est le contrôleur qui est chargé en
premier, afin de savoir ce qu'il est nécessaire d'afficher.
Django possède une faculté unique, lorsque vous allez créer votre page web,
Django va le considérer comme un projet composé de plusieurs applications
dans lesquelles vous pourrez gérer chaque partie de votre site.
2) En pratique
La théorie c’est une chose, la mettre en pratique en est une autre ! Vous allez
maintenant créer votre application via l’interprète MSDOS, pour créer un
projet vous allez devoir accéder au fichier django-admin.py. Pour cela,
saisissez la commande suivante :
(Attention à votre emplacement, cela peut varier en fonction de l’installation
de python)
Cd
C:\Users\$user_name$\AppData\Local\Programs\Python\PythonXX\Scripts
Puis :
django-admin.py startproject $nom_du_projet$
3/
Nicolas.F
Cela créera un nouveau dossier dans votre dossier script qui portera le nom
de votre projet comme l’image ci-dessous :
Dans mon cas, il s’agit de test_apply.
La structure de votre projet sera la suivante :
$nom_de_votre_projet$/
Manage.py
$nom_de_votre_projet$/
__init__.py
Settings.py
Urls.py
Wsgi.py
Quelques explications :
Vous pourrez trouver différents éléments dans ce dossier, seulement 3 vous
seront utiles (manage.py, settings.py, urls.py)
Le fichier le plus important pour le moment sera settings.py, celui-ci vous
permettra de paramétrer votre application tandis qu’urls.py rassemblera
toutes les URL de votre site web et la liste des fonctions à appeler pour
chaque URL.
4/
Nicolas.F
Maintenant que votre projet est créé, vous pourrez lancer le serveur de
développement de django via la commande suivante : manage.py
runserver dans l’invite de commande.
Vous pouvez aussi effectuer la commande manage.py help pour voir toutes
les options de manage.py
Vous devrez d’abord vous placer sur l’emplacement de manage.py soit
Cd
C:\Users\$user_name$\AppData\Local\Programs\Python\PythonXX\Scripts
\test_apply

Et vérifier qu’il fonctionne bien en tapant localhost :8000 comme url dans
votre moteur de recherche

Cependant, avant de suivre les conseils de Django et de commencer à travailler, vous allez devoir
configurer votre projet. Editez donc le fichier settings.py avec votre éditeur favoris
(Scripts\$nom_du_projet$\$nom_du_projet$\settings.py)

5/
Nicolas.F
Ce qu’il faut savoir sur le contenu de ce fichier :
La variable BASE_DIR indique un chemin au sein du projet, dans le cas présent
il s’agit de settings.py, elle pourra être utilisé plus tard dans vos vues.

La variable Debug indique si oui ou non votre site est en mode Debug,les
informations qui seront alors affichés lorsque vous souhaiterez accéder à votre
page peuvent être importantes à la sécurité de votre projet. Essayez donc de
laisser Debug=false lorsque vous laissez votre site en libre accès.

Django possède une librairie de Base de données, ainsi il gère très bien les
bases de données de tout type. Il vous suffira de modifier votre fonction
comme ceci :
Et vous pourrez rajouter quelques modifications :
Pensez ensuite à modifier la langue de votre projet (ce n’est pas obligatoire) :
LANGUAGE_CODE = 'en-us' en LANGUAGE_CODE = 'fr-FR'
Suite à ces paramétrages, vous pourrez créer la première application de
votre projet.
6/
Nicolas.F
Premièrement, placez-vous à nouveau dans le dossier de manage.py via
l’invite de commande puis entrez cette commande :
manage.py startapp $nom_de_votre_application$
La structure de votre projet ressemblera ensuite à ceci :
$nom_de_votre_projet$/
$nom_de_votre_application$/
__init__.py
admin.py
migrations/
__init__.py
models.py
tests.py
views.py
$nom_de_votre_projet$/
__init__.py
settings.py
urls.py
wsgi.py
db.sqlite3
manage.py
Ce qu’il faut savoir sur votre application :
views.py contiendra toutes les vues de votre application.
models.py contiendra vos modèles
admin.py va permettre de définir ce que souhaitez afficher et modifier dans
l'administration de l'application
Avant de modifier vos vues, vous devrez ajouter votre application dans les
paramètres pour que Django le considère bien comme une application.

7/
Nicolas.F
Votre application pourra contenir plusieurs vues que vous pourrez ajouter par
la suite dans le but de remplir divers fonctions.
Gestion de votre vue :
Allez dans la vue que Django à généré (Scripts\$nom_de_votre_projet $\
$nom_de_votre_application$\views.py

Par mesure de sécurité, vérifiez bien que l’encodage de votre vue est en UTF8
Ce que contient ce code : L’import de la fonction HttpResponse du module
dhango.http, cette classe vous permettra de retourner une réponse depuis
une chaîne de caractères. Il s’agit d’une fonction propre à Django qui
permet d’encapsuler votre réponse afin de mieux la traiter.
Une fonction home qui reçoit en argument : « request », il contient
simplement des informations sur la méthode de la requête (GET,POST)
Une chaîne de caractère nommée text qui est une des instances de
HttpRequest
Toutes les fonctions prendront comme premier argument un objet du type
HttpRequest. Toutes les vues doivent forcément retourner une instance de
HttpResponse, sans quoi Django générera une erreur.
Votre vue ne s’affichera pas encore tout de suite sur votre suite puisqu’elle
n’est pas encore reliée à celui-ci, pour cela vous aurez besoin de urls.py qui
se situe ici : Scripts\$nom_de_votre_projet $\$nom_de_votre_projet $\urls.py
8/
Nicolas.F

La liste urlpatterns, permet de définir les associations entre URL et vues, la ligne
20 dans urlpatterns est composée des éléments suivant :
1. Le schéma de l'URL : une URL peut être composée d'arguments qui
permettent par la suite de retrouver des informations dans les modèles
2. Le chemin Python vers la vue correspondante.
1. r’^accueil$’ permet de définir la racine de votre site web, si vous laissez l’url
vide comme ça : r’^$’, la racine aurait été : http://votre_projet.com/ au lieu
de : http://votre_projet.com/accueil
2. Le second argument de l’url doit être votre vue soit la fonction home situé
dans views.py, cet argument est accessible grâce à l’import des vues depuis
votre application (from $le_nom_de_votre_application$ import views)
Enregistrez-bien vos modifications et lancez le serveur de Django comme fait
précédemment, accédez à votre site via localhost :8000 et admirez le
contenu !
Cependant, ce n’était qu’un aperçu des capacités de Django. En effet, vous
pouvez (et devrez) structurer vos urls par le bien d’un autre fichier urls. Cela
permettra notamment lorsque vous aurez plusieurs applications d’avoir un
fichier url propre à chacune d’entre elles. Ainsi, votre projet sera structuré.
9/
Nicolas.F
Structuration
Pour structurer vos urls, vous devrez créer un second fichier urls dans votre
application, vérifiez bien que vous l’avez mis en extension .py pour que
python puisse gérer ce fichier.

Dans ce fichier url, vous ajouterez
from django.conf.urls import patterns, url
urlpatterns = patterns('',
url(r'^accueil$', 'blog.views.home'),
)
Et dans votre autre fichier url, ajoutez :
from django.conf.urls import url
from blog import views
urlpatterns = [
url(r'^blog/', include('blog.urls'))
]
10/
Nicolas.F
Il est possible que le lien ne fonctionne pas car cela dépendra de la
génération de votre projet et de votre application.
Fin Cours
11/
Nicolas.F
Téléchargement