Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format
PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
utilisateurs:hypathie:tutos:developpement-pyhon-utiliser-django [03/12/2015 09:53] Hypathie [Développement python : utiliser django] |
utilisateurs:hypathie:tutos:developpement-pyhon-utiliser-django [03/12/2015 15:28] Hypathie [Mise en place d'un environnement minimal pour utiliser Django] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Développement python : utiliser django ====== | + | ====== Développer en Python avec Django ====== |
* Objet : Installer un environnement pour Django | * Objet : Installer un environnement pour Django | ||
Ligne 6: | Ligne 6: | ||
- | ===== Mise en place des outils de développement pour Django ===== | + | ===== Mise en place d'un environnement minimal pour utiliser Django ===== |
+ | |||
+ | ==== Choisir sa version de Python sur sa Debian8 ==== | ||
+ | |||
+ | |||
+ | * Pour tout le système avec update-alternatives : | ||
+ | |||
+ | <code root>update-alternatives --list python</code> | ||
+ | <code retour>update-alternatives: error: no alternatives for python</code> | ||
+ | |||
+ | * Charger les différentes versions de Python : | ||
+ | |||
+ | - __Pour voir où sont les version de python disponibles :__ | ||
+ | |||
+ | <code user> ls /usr/bin/python*</code> | ||
+ | <code retour> | ||
+ | /usr/bin/python /usr/bin/python3 /usr/bin/python3-config | ||
+ | /usr/bin/python2 /usr/bin/python3.4 /usr/bin/python3m | ||
+ | /usr/bin/python2.7 /usr/bin/python3.4-config /usr/bin/python3m-config | ||
+ | /usr/bin/python2.7-config /usr/bin/python3.4m /usr/bin/python-config | ||
+ | /usr/bin/python2-config /usr/bin/python3.4m-config | ||
+ | </code> | ||
+ | |||
+ | - __Pour ajouter à la liste de update-alternatives les deux versions de python disponibles :__\\ | ||
+ | (ici par exemple; "/usr/bin/python2.7" et "/usr/bin/python3.4 ") | ||
+ | |||
+ | <code root>update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1</code> | ||
+ | <code root>update-alternatives --install /usr/bin/python python /usr/bin/python3.4 2</code> | ||
+ | |||
+ | - __Pour voir la nouvelle liste de update-alternatives :__ | ||
+ | |||
+ | <code root>update-alternatives --list python</code> | ||
+ | <code retour> /usr/bin/python2.7 | ||
+ | /usr/bin/python3.4</code> | ||
+ | |||
+ | |||
+ | - __Pour basculer de l'une à l'autre version de Python :__ | ||
+ | |||
+ | <code root>update-alternatives --config python</code> | ||
+ | |||
+ | <note important> | ||
+ | Si l'on choisit d'utiliser Python3 pour tous le système, il faudra prendre garde de bien installer les outils python3 et non python2 :\ | ||
+ | |||
+ | Il faudra lancer : | ||
+ | <code root>python3-pip python3-dev</code> | ||
+ | |||
+ | et non : | ||
+ | |||
+ | <code root>python-pip python-dev</code> | ||
+ | </note> | ||
+ | |||
+ | |||
+ | <note tip>**Il est possible de laisser la version Python 2 pour tout le système | ||
+ | et d'utiliser la version 3 pour l'environnement de l'utilisateur courant.** | ||
+ | |||
+ | * Pour ce faire on choisit la version de Python2 pour tout le système : | ||
+ | |||
+ | <code root>update-alternatives --config python</code> | ||
+ | |||
+ | <code retour> | ||
+ | Il existe 2 choix pour l'alternative python (qui fournit /usr/bin/python). | ||
+ | |||
+ | Sélection Chemin Priorité État | ||
+ | ------------------------------------------------------------ | ||
+ | * 0 /usr/bin/python3.4 2 mode automatique | ||
+ | 1 /usr/bin/python2.7 1 mode manuel | ||
+ | 2 /usr/bin/python3.4 2 mode manuel | ||
+ | |||
+ | Appuyez sur <Entrée> pour conserver la valeur par défaut[*] ou choisissez le numéro sélectionné :1 | ||
+ | </code> | ||
+ | |||
+ | <code root>python --version</code> | ||
+ | <code retour>Python 2.7.9</code> | ||
+ | |||
+ | * On configure Python3 pour l'utilisateur courant : | ||
+ | |||
+ | - __On édite le fichier "~/bashrc" :__ | ||
+ | |||
+ | <code user>vim ~/.bashrc</code> | ||
+ | |||
+ | - __On ajoute cet alias :__ | ||
+ | |||
+ | <code> | ||
+ | alias python='/usr/bin/python3.4' | ||
+ | </code> | ||
+ | |||
+ | - __On enregistre puis on actualise l'environnement de l'utilisateur courant :__ | ||
+ | |||
+ | <code user>. ~/.bashrc</code> | ||
+ | |||
+ | <code user>python --version</code> | ||
+ | |||
+ | <code retour>Python 3.4.2</code> | ||
+ | |||
+ | |||
+ | * **Pourquoi conserver deux versions de python ? :** | ||
+ | |||
+ | - __On choisit d'activer Python3 que pour l'utilisateur courant et Python2 pour tout le système :__ | ||
+ | |||
+ | Ce choix est bon dans le cas où l'on veut s'exercer au code Python qui diffère entre les deux versions. | ||
+ | On peut par exemple, se créer un utilisateur qui utilisera Python2 | ||
+ | |||
+ | - __On veut apprendre à coder en python directement avec le framework Django :__ | ||
+ | |||
+ | Il faut alors choisir une **unique** version de Python pour tout le système, car comme dit plus haut,\ | ||
+ | les utiles python servant à utiliser Django s'installe en tant que root pour tous le système. | ||
+ | Et l'installation pour tout le système des outils python et python3 génère des conflits. | ||
+ | |||
+ | Ou toujours travailler dans un **environnement python virtuel** en utilisant " virtualenv" (voir plus bas). | ||
+ | |||
+ | </note> | ||
+ | |||
+ | |||
+ | * Pour la suite de ce tuto : python3 pour tout le système : | ||
+ | |||
+ | <code root>update-alternatives --config python</code> | ||
+ | <code retour> | ||
+ | Il existe 2 choix pour l'alternative python (qui fournit /usr/bin/python). | ||
+ | |||
+ | Sélection Chemin Priorité État | ||
+ | ------------------------------------------------------------ | ||
+ | 0 /usr/bin/python3.4 2 mode automatique | ||
+ | * 1 /usr/bin/python2.7 1 mode manuel | ||
+ | 2 /usr/bin/python3.4 2 mode manuel | ||
+ | |||
+ | Appuyez sur <Entrée> pour conserver la valeur par défaut[*] ou choisissez le numéro sélectionné :0 | ||
+ | </code> | ||
+ | |||
+ | <code root>python --version</code> | ||
+ | <code retour>Python 3.4.2</code> | ||
+ | |||
+ | * Pour supprimer l'un des choix de la liste : | ||
+ | |||
+ | <code root>update-alternatives --remove python /usr/bin/python2.7</code> | ||
+ | |||
+ | |||
+ | ====Installer les outils python nécessaires à l'installation d'un projet Django :==== | ||
+ | |||
+ | <code root>apt-get install python3-pip python3-dev virtualenv</code> | ||
+ | |||
+ | - python3-pip est un installateur de paquets python, Pip permet d'installer aisément des modules Python, à la manière dont on installe des paquets dans une distribution linux; | ||
+ | - python3-dev : permet d'utiliser des outils de développement pour la construction des modules Python, non pris en charge par pip, en particulier pour utiliser des bibliothèques avec des extensions en C | ||
+ | - virtualenv : permet de créer un environnement cloisonné Python | ||
+ | |||
+ | * À consulter : https://virtualenv.readthedocs.org/en/latest/ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Installer Django dans un environnement python virtuel ==== | ||
+ | === On créer un répertoire par exemple sur son bureau :=== | ||
+ | |||
+ | <code user>cd ~/Bureau</code> | ||
+ | |||
+ | <code user>virtualenv PremiersProjetsDjango</code> | ||
+ | |||
+ | Cela a crée une dossier nommé "PremiersProjetsDjango" sur le bureau de l'utilisateur courant | ||
+ | |||
+ | |||
+ | ===on se place dans le dossier "PremiersProjetsDjango"=== | ||
+ | |||
+ | <code user>cd PremiersProjetsDjango/</code> | ||
+ | |||
+ | <code user>ls</code> | ||
+ | |||
+ | Il contient trois dossiers permettant d'utiliser python : | ||
+ | |||
+ | <code retour>python python3 python3.4 </code> | ||
+ | |||
+ | |||
+ | === On active l'environnement virtuel python=== | ||
+ | |||
+ | <code user>source bin/activate</code> | ||
+ | |||
+ | <note tip> | ||
+ | **Pour sortir de l'environnement virtuel python :** | ||
+ | |||
+ | <code user>deactivate</code> | ||
+ | </note> | ||
+ | |||
+ | === On installe Django === | ||
+ | |||
+ | <code user>pip3 install django</code> | ||
+ | |||
+ | * Et pour vérifier tout en prenant connaissance de la version de django installée : | ||
+ | |||
+ | (selon la méthode proposer par la doc officielle de Django : https://docs.djangoproject.com/fr/1.8/intro/tutorial01/) | ||
+ | |||
+ | <code user>python3 -c "import django; print(django.get_version())"</code> | ||
+ | <code retour>1.9</code> | ||
+ | |||
+ | <note tip> | ||
+ | * **Tout est bien clair ? ** | ||
+ | |||
+ | <code user>deactivate</code> | ||
+ | <code user>python3 -c "import django; print(django.get_version())"</code> | ||
+ | <code retour> | ||
+ | Traceback (most recent call last): | ||
+ | File "<string>", line 1, in <module> | ||
+ | ImportError: No module named 'django' | ||
+ | </code> | ||
+ | |||
+ | |||
+ | <code user>source bin/activate</code> | ||
+ | <code user>python3 -c "import django; print(django.get_version())"</code> | ||
+ | <code retour>1.9</code> | ||
+ | |||
+ | |||
+ | * Pour avoir la liste de tous les modules python installés dans son environnement : | ||
+ | |||
+ | <code user>pip freeze</code> | ||
+ | <code retour> | ||
+ | Django==1.9 | ||
+ | wheel==0.24.0 | ||
+ | </code> | ||
+ | </note> | ||
+ | |||
+ | === Création d'un premier projet Django=== | ||
+ | |||
+ | <note> | ||
+ | **Un petit rappel ?** | ||
+ | |||
+ | - On a crée un dossier par exemple sur son bureau pour l'environnement virtuel python "virtualenv PremiersProjetsDjango"; | ||
+ | - Dans ce dossier on a activé python "source bin/activate" ; | ||
+ | - On a installé Django. | ||
+ | |||
+ | À partir de là pour créer un projet Django, il faut aller dans le dossier de l'environnement virtuel python et activer python : | ||
+ | |||
+ | <code user>cd ~/Bureau/PremiersProjetsDjango/</code> | ||
+ | |||
+ | <code user>source bin/activate</code> | ||
+ | |||
+ | <code user>python3 -c "import django; print(django.get_version())"</code> | ||
+ | |||
+ | </note> | ||
+ | |||
+ | * Le contenu de son dossier avant création d'un nouveau projet: | ||
+ | |||
+ | <code user>pwd</code> | ||
+ | <code retour>/home/hypathie/Bureau/PremiersProjetsDjango</code> | ||
+ | |||
+ | <code user>ls</code> | ||
+ | <code retour>bin include lib</code> | ||
+ | |||
+ | * Pour créer un nouveau projet nommé par exemple "premierProjet": | ||
+ | |||
+ | <code user>django-admin.py startproject premierProjet</code> | ||
+ | <code user>ls</code> | ||
+ | <code retour>bin include lib premierProjet</code> | ||
+ | |||
+ | * Architecture du dossier premierProjet : | ||
+ | |||
+ | <code user>cd premierProjet/</code> | ||
+ | <code retour>manage.py premierProjet</code> | ||
+ | |||
+ | <code user>cd premierProjet/</code> | ||
+ | <code retour>__init__.py settings.py urls.py wsgi.py</code> | ||
+ | |||
+ | * Avec la commande tree : | ||
+ | |||
+ | <code user>tree premierProjet/</code> | ||
+ | <code retour> | ||
+ | premierProjet/ | ||
+ | ├── manage.py | ||
+ | └── premierProjet | ||
+ | ├── __init__.py | ||
+ | ├── settings.py | ||
+ | ├── urls.py | ||
+ | └── wsgi.py | ||
+ | </code> | ||
+ | |||
+ | **Ces fichiers sont :** | ||
+ | |||
+ | * __premierProjet/__ c'est le répertoire racine qui est le contenant du projet nouvellement créé. | ||
+ | |||
+ | * __manage.py__ est un utilitaire en ligne de commande qui vous permet d’interagir avec ce projet Django de différentes façons. Vous trouverez toutes les informations nécessaires sur manage.py dans django-admin et manage.py. | ||
+ | |||
+ | * Le sous-répertoire __premierProjet/__ correspond au paquet Python effectif de votre projet. C’est le nom du paquet Python que vous devrez utiliser pour importer ce qu’il contient. | ||
+ | |||
+ | * __premierProjet/__init__.py__ : un fichier vide qui indique à Python que ce répertoire doit être considéré comme un paquet (lisez informations sur les paquets (en) dans la documentation officielle de Python si vous êtes débutant avec ce langage). | ||
+ | |||
+ | * __premierProjet/settings.py__ : réglages et configuration de ce projet Django. Les réglages de Django vous apprendra tout sur le fonctionnement des réglages. | ||
+ | |||
+ | * __premierProjet/urls.py__ : les déclarations des URL de ce projet Django, une sorte de « table des matières » de votre site Django. Vous pouvez en lire plus sur les URL dans Distribution des URL. | ||
+ | |||
+ | * __premierProjet/wsgi.py__ : un point d’entrée pour les serveurs Web compatibles WSGI pour déployer votre projet. Voir Comment déployer avec WSGI pour plus de détails. | ||
+ | |||
+ | Pour plus de détails voir la doc officielle de Django : https://docs.djangoproject.com/fr/1.8/intro/tutorial01/ | ||
+ | |||
+ | === Premier test=== | ||
+ | |||
+ | * On se place à la racine du nouveau projet : | ||
+ | |||
+ | <code user>cd ~/Bureau/PremiersProjetsDjango/premierProjet/</code> | ||
+ | |||
+ | <code user>python3 manage.py runserver</code> | ||
+ | |||
+ | <code retour> | ||
+ | Performing system checks... | ||
+ | |||
+ | System check identified no issues (0 silenced). | ||
+ | |||
+ | You have unapplied migrations; your app may not work properly until they are applied. | ||
+ | Run 'python manage.py migrate' to apply them. | ||
+ | |||
+ | December 03, 2015 - 12:43:53 | ||
+ | Django version 1.9, using settings 'premierProjet.settings' | ||
+ | Starting development server at http://127.0.0.1:8000/ | ||
+ | Quit the server with CONTROL-C. | ||
+ | </code> | ||
+ | |||
+ | <note> | ||
+ | Rien de grave dans ce retour. | ||
+ | Django prévient qu'aucune base de données n'a été migré. | ||
+ | Ce n'est pas important pour ce premier test. | ||
+ | </note> | ||
+ | |||
+ | * Depuis son navigateur on entre dans la barre url: "http://localhost:8000/" | ||
+ | |||
+ | On obtient : | ||
+ | |||
+ | {{http://pix.toile-libre.org/upload/img/1449147148.png}}\\ | ||
+ | |||
+ | ===Premier projet avec la base de données sqlite3=== | ||
+ | |||
+ | * Par défaut, Django utilise la base de donnée sqlite3 : | ||
+ | |||
+ | <code user>~/Bureau/PremiersProjetsDjango/premierProjet/premierProjet</code> | ||
+ | |||
+ | <code user>vim settings.py</code> | ||
+ | |||
+ | <code> | ||
+ | ... | ||
+ | DATABASES = { | ||
+ | 'default': { | ||
+ | 'ENGINE': 'django.db.backends.sqlite3', | ||
+ | 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), | ||
+ | } | ||
+ | } | ||
+ | ... | ||
+ | </code> | ||
+ | |||
+ | <code user>python3 manage.py makemigrations</code> | ||
+ | <code retour>No changes detected</code> | ||
+ | |||
+ | |||
+ | <code user>python3 manage.py migrate</code> | ||
+ | <code retour>Operations to perform: | ||
+ | Apply all migrations: admin, auth, contenttypes, sessions | ||
+ | Running migrations: | ||
+ | Rendering model states... DONE | ||
+ | Applying contenttypes.0001_initial... OK | ||
+ | Applying auth.0001_initial... OK | ||
+ | Applying admin.0001_initial... OK | ||
+ | Applying admin.0002_logentry_remove_auto_add... OK | ||
+ | Applying contenttypes.0002_remove_content_type_name... OK | ||
+ | Applying auth.0002_alter_permission_name_max_length... OK | ||
+ | Applying auth.0003_alter_user_email_max_length... OK | ||
+ | Applying auth.0004_alter_user_username_opts... OK | ||
+ | Applying auth.0005_alter_user_last_login_null... OK | ||
+ | Applying auth.0006_require_contenttypes_0002... OK | ||
+ | Applying auth.0007_alter_validators_add_error_messages... OK | ||
+ | Applying sessions.0001_initial... OK</code> | ||
- | ===== Installation ===== | ||
===== Utilisation ===== | ===== Utilisation ===== | ||