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 [04/12/2015 07:32] Hypathie [Mise en place d'un environnement minimal pour utiliser Django] |
utilisateurs:hypathie:tutos:developpement-pyhon-utiliser-django [08/12/2015 15:27] Hypathie [Créer des projets Django en python2 ou python3] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Développer en Python avec Django ====== | + | ====== Développer en Python3 avec Django====== |
- | * Objet : Installer un environnement pour Django | + | * Objet : Installer un environnement virtuel avec python3 pour utiliser Django \\ essayer un mini projet avec chacune des différentes bases de données supportées par ORM de Django. |
- | * Niveau requis : FIXME {{tag>débutant }} | + | * Niveau requis : {{tag>débutant}} |
- | * Commentaires : //Contexte d'utilisation du sujet du tuto. // | + | |
- | ===== Mise en place d'un environnement minimal pour utiliser Django ===== | + | ===== Installations ===== |
- | ==== Choisir sa version de Python sur sa Debian8 ==== | + | **Installer les outils et bibliothèques pour développer en python ou python3** |
+ | <note tip> | ||
+ | Sur Jessie, python et python 3 sont tous deux installés. | ||
+ | </note> | ||
- | * Pour tout le système avec update-alternatives : | + | * Fichiers d'en-tête de Python |
- | <code root>update-alternatives --list python</code> | + | <code root>apt-get install python-dev python3-dev</code> |
- | <code retour>update-alternatives: error: no alternatives for python</code> | + | |
- | * Charger les différentes versions de Python : | + | * Pour l'algèbre avec scipy |
- | - __Pour voir où sont les version de python disponibles :__ | + | <code root>apt-get install libblas3 libblas-dev liblapack3 liblapack-dev</code> |
- | <code user> ls /usr/bin/python*</code> | + | * Bibliothèques FreeType nécessaire par matplotlib |
- | <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 :__\\ | + | <code=root>apt-get install libfreetype6 libfreetype6-dev</code> |
- | (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> | + | * Dépendances nécessaire pour la cryptographie |
- | <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>apt-get install libffi-dev libssl-dev</code> |
- | <code root>update-alternatives --list python</code> | + | * Les paquets Core Python |
- | <code retour> /usr/bin/python2.7 | + | |
- | /usr/bin/python3.4</code> | + | |
+ | <code root>apt-get install python-pip python3-pip</code> | ||
- | - __Pour basculer de l'une à l'autre version de Python :__ | ||
- | <code root>update-alternatives --config python</code> | + | <code root>apt-get install python-virtualenv</code> |
- | <note important> | + | <note> |
- | 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 :\ | + | À savoir sur Jessie, il est inutile de lancer : |
- | Il faudra lancer : | + | ''apt-get install python3-virtualenv'' \\ |
- | <code root>python3-pip python3-dev</code> | + | |
- | et non : | + | En effet, avec la commande ''apt-get install python-virtualenv'' a installé ''python3-virtualenv'' et ''python-virtualenv'' |
- | + | ||
- | <code root>python-pip python-dev</code> | + | |
</note> | </note> | ||
+ | <note> | ||
- | <note tip>**Il est possible de laisser la version Python 2 pour tout le système | + | - ''python3-pip'' (ou ''python-pip'') : 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; |
- | et d'utiliser la version 3 pour l'environnement de l'utilisateur courant.** | + | - ''python3-dev'' (ou ''python-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 | ||
- | * Pour ce faire on choisit la version de Python2 pour tout le système : | + | * À consulter : https://virtualenv.readthedocs.org/en/latest/ \\ https://github.com/neurite/debian-setup/wiki/Basic-Development-Setup-on-Debian |
+ | </note> | ||
- | <code root>update-alternatives --config python</code> | + | * Installer la documentation python |
- | <code retour> | + | <code root>apt-get install python-doc python3-doc</code> |
- | Il existe 2 choix pour l'alternative python (qui fournit /usr/bin/python). | + | |
- | Sélection Chemin Priorité État | + | * pour utiliser pyenv |
- | ------------------------------------------------------------ | + | |
- | * 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 root>apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \ |
- | </code> | + | libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev</code> |
- | <code root>python --version</code> | + | * Sans rapport avec le développement mais utilisé plus bas |
- | <code retour>Python 2.7.9</code> | + | |
- | * On configure Python3 pour l'utilisateur courant : | + | <code root>apt-get install tree</code> |
- | - __On édite le fichier "~/bashrc" :__ | ||
- | <code user>vim ~/.bashrc</code> | + | ===== Créer des projets Django en python2 ou python3===== |
- | - __On ajoute cet alias :__ | + | ===Les versions de python sur sa Jessie === |
- | <code> | + | <code user> ls /usr/bin/python*</code> |
- | alias python='/usr/bin/python3.4' | + | <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> | </code> | ||
- | - __On enregistre puis on actualise l'environnement de l'utilisateur courant :__ | + | <note tip> |
+ | L'idée suivie ici est de pouvoir aussi bien créer des projets Django codés en python 3 tandis que c'est la version python 2 qui est en place sur tout le système que l'inverse, c'est-à-dire, pouvoir créer des projects Django codés en python2 alors que c'est python 3 qui est mise en place sur tout le système. \\ | ||
- | <code user>. ~/.bashrc</code> | + | Pour ce faire, on va créer un environnement virtuel dans un dossier créé dans le repertoire courant de l'utilisateur du système. |
+ | On pourra alors installer Django aussi bien pour y coder en python2 qu'en python3, sans se soucier de la version mise en place sur l'ensemble du système. \\ | ||
- | <code user>python --version</code> | + | Cela évitera aussi de se mélanger les pinceaux entre les utilitaires ''pip install ...'' ou ''pip3 install ...''. \\ |
- | <code retour>Python 3.4.2</code> | + | On n'utilisera pas ''virtualenv'' seul, mais on l'utilisera avec ''pyenv'' afin de s'éviter quelque conflits lors de l'installation de django. \\ |
+ | En effet : | ||
- | * **Pourquoi conserver deux versions de python ? :** | + | <code user> |
- | + | python --version | |
- | - __On choisit d'activer Python3 que pour l'utilisateur courant et Python2 pour tout le système :__ | + | </code> |
- | + | ||
- | 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> | <code retour> | ||
- | Il existe 2 choix pour l'alternative python (qui fournit /usr/bin/python). | + | Python 3.4.2 |
- | + | ||
- | 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> | ||
- | <code root>python --version</code> | + | <code user>virtualenv MonPy3Django -p /usr/bin/python3.4</code> |
- | <code retour>Python 3.4.2</code> | + | <code user>cd MonPy3Django/</code> |
+ | <code user>source bin/activate 1.8-3.4</code> | ||
+ | <code retour>Downloading/unpacking django | ||
+ | Downloading Django-1.9-py2.py3-none-any.whl (6.6MB): 6.6MB downloaded | ||
+ | Installing collected packages: django | ||
+ | *** Error compiling '/tmp/pip-build-c20d1nfa/django/django/conf/app_template/apps.py'... | ||
+ | File "/tmp/pip-build-c20d1nfa/django/django/conf/app_template/apps.py", line 4 | ||
+ | class {{ camel_case_app_name }}Config(AppConfig): | ||
+ | ^ | ||
+ | SyntaxError: invalid syntax | ||
- | * Pour supprimer l'un des choix de la liste : | + | *** Error compiling '/tmp/pip-build-c20d1nfa/django/django/conf/app_template/models.py'... |
+ | File "/tmp/pip-build-c20d1nfa/django/django/conf/app_template/models.py", line 1 | ||
+ | {{ unicode_literals }}from django.db import models | ||
+ | ^ | ||
+ | SyntaxError: invalid syntax | ||
- | <code root>update-alternatives --remove python /usr/bin/python2.7</code> | + | Successfully installed django |
+ | Cleaning up... | ||
+ | </code> | ||
+ | :-/ | ||
- | ====Installer les outils python nécessaires à l'installation d'un projet Django :==== | + | <code user>rm -r ~/MonPy3Django</code> |
- | <code root>apt-get install python3-pip python3-dev virtualenv</code> | + | </note> |
- | - 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; | + | ==== Installer pyenv==== |
- | - 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/ | + | <code user>git clone https://github.com/yyuu/pyenv.git ~/.pyenv</code> |
+ | <code user>echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc</code> | ||
+ | <code user>echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc</code> | ||
+ | <code user>echo 'eval "$(pyenv init -)"' >> ~/.bashrc</code> | ||
+ | <code user>exec $SHELL</code> | ||
+ | <code user>pyenv</code> | ||
+ | <code retour>pyenv 20151124-16-g132179d | ||
+ | Usage: pyenv <command> [<args>] | ||
+ | Some useful pyenv commands are: | ||
+ | commands List all available pyenv commands | ||
+ | local Set or show the local application-specific Python version | ||
+ | global Set or show the global Python version | ||
+ | shell Set or show the shell-specific Python version | ||
+ | install Install a Python version using python-build | ||
+ | uninstall Uninstall a specific Python version | ||
+ | rehash Rehash pyenv shims (run this after installing executables) | ||
+ | version Show the current Python version and its origin | ||
+ | versions List all Python versions available to pyenv | ||
+ | which Display the full path to an executable | ||
+ | whence List all Python versions that contain the given executable | ||
+ | See `pyenv help <command>' for information on a specific command. | ||
+ | For full documentation, see: https://github.com/yyuu/pyenv#readme</code> | ||
+ | <code user>pyenv install 2.7.9</code> | ||
+ | <code user>pyenv install 3.4.3</code> | ||
- | ==== Installer Django dans un environnement python virtuel ==== | + | <note> |
+ | L'exécution des deux commandes précédentes est longue. Patience... | ||
+ | </note> | ||
- | === On créer un répertoire par exemple sur son bureau :=== | + | <code user>pyenv versions</code> |
+ | <code retour>* system (set by /home/hypathie/.pyenv/version) | ||
+ | 2.7.9 | ||
+ | 3.4.3</code> | ||
+ | |||
+ | ===Quelques commandes pyenv=== | ||
- | <code user>cd ~/Bureau</code> | + | * Avoir une liste des commandes pyenv |
- | <code user>virtualenv PremiersProjetsDjango</code> | + | <code user>pyenv</code> |
+ | <code retour>Some useful pyenv commands are: | ||
+ | commands List all available pyenv commands | ||
+ | local Set or show the local application-specific Python version | ||
+ | global Set or show the global Python version | ||
+ | shell Set or show the shell-specific Python version | ||
+ | install Install a Python version using python-build | ||
+ | uninstall Uninstall a specific Python version | ||
+ | rehash Rehash pyenv shims (run this after installing executables) | ||
+ | version Show the current Python version and its origin | ||
+ | versions List all Python versions available to pyenv | ||
+ | which Display the full path to an executable | ||
+ | whence List all Python versions that contain the given executable | ||
+ | </code> | ||
- | Cela a crée une dossier nommé "PremiersProjetsDjango" sur le bureau de l'utilisateur courant | + | * Comment lancer une commande pyenv |
+ | <code user>pyenv +lacommande</code> | ||
- | ===on se place dans le dossier "PremiersProjetsDjango"=== | + | * Pour coder dans une version de python, on appelle le shell de pyenv de la version souhaitée |
- | <code user>cd PremiersProjetsDjango/</code> | + | - Pour que le shell de pyenv utilise la version 2 (installée plutôt) |
+ | <code user>pyenv shell 2.7.9</code> | ||
+ | - Pour savoir quelle est la version de son shell | ||
+ | <code user>pyenv shell</code> | ||
+ | <code retour>2.7.9</code> | ||
+ | - version de python utilisée | ||
+ | <code user>python --version</code> | ||
+ | <code retour>Python 2.7.9</code> | ||
+ | - Depuis où ? | ||
+ | <code user> which python</code> | ||
+ | <code user>/home/hypathie/.pyenv/shims/python</code> | ||
- | <code user>ls</code> | + | - Pour que le shell de pyenv utilise la version 3 (installée aussi plutôt) |
+ | <code user>pyenv shell 3.4.3</code> | ||
+ | <code user>python --version</code> | ||
+ | <code retour>Python 3.4.3</code> | ||
- | Il contient trois dossiers permettant d'utiliser python : | + | ====Utiliser virtualenv avec pyenv==== |
- | <code retour>python python3 python3.4 </code> | + | * Configuration du système pour utiliser virtualenv avec pyenv |
+ | <code user>git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv</code> | ||
+ | <code user>echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc</code> | ||
+ | <code user>exec $SHELL</code> | ||
- | === On active l'environnement virtuel python=== | + | * Créer un répertoire où l'on pourra installer django pour python 3 |
- | <code user>source bin/activate</code> | + | <code user>mkdir ProjetsDjangoPy3 && cd ProjetsDjangoPy3</code> |
+ | <code user>pyenv shell 3.4.3</code> | ||
+ | <code user>python --version</code> | ||
+ | <code retour>Python 3.4.3</code> | ||
+ | <code user>pyenv virtualenv 1.8-3.4</code> | ||
+ | <code retour>Ignoring indexes: https://pypi.python.org/simple | ||
+ | Requirement already satisfied (use --upgrade to upgrade): setuptools in /home/hypathie/.pyenv/versions/3.4.3/envs/1.8-3.4/lib/python3.4/site-packages | ||
+ | Requirement already satisfied (use --upgrade to upgrade): pip in /home/hypathie/.pyenv/versions/3.4.3/envs/1.8-3.4/lib/python3.4/site-packages | ||
+ | </code> | ||
+ | <code user>pyenv activate 1.8-3.4</code> | ||
- | <note tip> | + | ====Installer Django ==== |
- | **Pour sortir de l'environnement virtuel python :** | + | |
- | <code user>deactivate</code> | + | <code user>pip install django</code> |
- | </note> | + | <code retour>You are using pip version 6.0.8, however version 7.1.2 is available. |
+ | You should consider upgrading via the 'pip install --upgrade pip' command. | ||
+ | Collecting django | ||
+ | Downloading Django-1.9-py2.py3-none-any.whl (6.6MB) | ||
+ | 100% |################################| 6.6MB 88kB/s | ||
+ | Installing collected packages: django | ||
- | === On installe Django === | + | Successfully installed django-1.9 |
+ | (1.8-3.4) hypathie@debian:~/MonPython3Django$ pip install django</code> | ||
+ | Pas d'erreur cette fois 8-) | ||
- | <code user>pip3 install django</code> | + | * Pour vérifier les versions |
- | * Et pour vérifier tout en prenant connaissance de la version de django installée : | + | <code user>django-admin.py --version</code> |
+ | <code retour>1.9</code> | ||
- | (selon la méthode proposer par la doc officielle de Django : https://docs.djangoproject.com/fr/1.8/intro/tutorial01/) | + | <code user>python --version</code> |
+ | <code user>Python 3.4.3</code> | ||
+ | |||
+ | Avec la commande recommandée par la doc officielle de django: | ||
<code user>python3 -c "import django; print(django.get_version())"</code> | <code user>python3 -c "import django; print(django.get_version())"</code> | ||
- | <code retour>1.9</code> | ||
- | <note tip> | + | aussi bien que : |
- | * **Tout est bien clair ? ** | + | |
- | <code user>deactivate</code> | + | <code user>python -c "import django; print(django.get_version())"</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> | <code retour>1.9</code> | ||
+ | 8-) | ||
- | * Pour avoir la liste de tous les modules python installés dans son environnement : | + | <note tip> |
+ | * Pour sortir de pyenv : | ||
- | <code user>pip freeze</code> | + | <code user>pyenv deactivate</code> |
- | <code retour> | + | |
- | Django==1.9 | + | |
- | wheel==0.24.0 | + | |
- | </code> | + | |
- | + | ||
- | * **Manuel officiel de pip** : https://pip.pypa.io/en/stable/user_guide/ | + | |
</note> | </note> | ||
- | ==== Création d'un premier projet Django==== | + | |
+ | ====Créer un projet django sous python 3==== | ||
<note> | <note> | ||
- | **Un petit rappel ?** | + | Si l'on reprend le wiki ici ! Ou qu'on a lancé la commande ''pyenv deactivate'' |
- | - On a crée un dossier par exemple sur son bureau pour l'environnement virtuel python "virtualenv PremiersProjetsDjango"; | + | * On va dans son répertoire configuré pour python 3 dans lequel est installé django |
- | - Dans ce dossier on a activé python "source bin/activate" ; | + | <code user>cd ~/ProjetsDjangoPy3/</code> |
- | - On a installé Django. | + | <code user>pyenv activate 1.8-3.4</code> |
- | + | ||
- | À 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> | </note> | ||
- | * Le contenu de son dossier avant création d'un nouveau projet: | + | * Pour créer le projet Django nommé par exemple "premierProjet" |
- | + | ||
- | <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>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 user>tree premierProjet/</code> | ||
Ligne 280: | Ligne 296: | ||
</code> | </code> | ||
- | **Ces fichiers sont :** | + | <note tip> |
+ | Et voilà, partir de là, on retombe sur nos pattes et l'on peut suivre simplement le premier projet de la doc officielle de django alors que notre environnement virtuel est sous python 3 ! \\ | ||
- | * __premierProjet/__ c'est le répertoire racine qui est le contenant du projet nouvellement créé. | + | https://docs.djangoproject.com/fr/1.8/intro/tutorial01/ \\ |
- | * __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. | + | que je vais résumer dans ce qui suit ! |
- | * 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. | + | </note> |
- | + | ||
- | * __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=== | === Premier test=== | ||
Ligne 304: | Ligne 312: | ||
<code user>cd ~/Bureau/PremiersProjetsDjango/premierProjet/</code> | <code user>cd ~/Bureau/PremiersProjetsDjango/premierProjet/</code> | ||
- | <code user>python3 manage.py runserver</code> | + | * On met à jour la base de donnée : |
- | <code retour> | + | <code user>python manage.py migrate</code> |
- | Performing system checks... | + | |
- | System check identified no issues (0 silenced). | + | <code user>python manage.py runserver</code> |
- | 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/" | * Depuis son navigateur on entre dans la barre url: "http://localhost:8000/" | ||
Ligne 332: | Ligne 325: | ||
{{http://pix.toile-libre.org/upload/img/1449147148.png}}\\ | {{http://pix.toile-libre.org/upload/img/1449147148.png}}\\ | ||
- | ====Premier projet avec la base de données sqlite3==== | + | <note tip> |
+ | Notre avantage, on aurrait pu aussi bien lancer à la place des deux commandes précédentes : | ||
+ | |||
+ | <code user>python3 manage.py migrate</code> | ||
+ | |||
+ | <code user>python3 manage.py runserver</code> | ||
+ | |||
+ | 8-) | ||
+ | |||
+ | </note> | ||
+ | =====Premier projet avec la base de données sqlite3===== | ||
* Par défaut, Django utilise la base de donnée sqlite3 : | * Par défaut, Django utilise la base de donnée sqlite3 : | ||
Ligne 379: | Ligne 382: | ||
├── __init__.py | ├── __init__.py | ||
├── __pycache__ | ├── __pycache__ | ||
- | │ ├── __init__.cpython-34.pyc | + | │ ├── __init__.cpython-34.pyc |
- | │ ├── settings.cpython-34.pyc | + | │ ├── settings.cpython-34.pyc |
- | │ ├── urls.cpython-34.pyc | + | │ ├── urls.cpython-34.pyc |
- | │ └── wsgi.cpython-34.pyc | + | │ └── wsgi.cpython-34.pyc |
├── settings.py | ├── settings.py | ||
├── urls.py | ├── urls.py | ||
Ligne 419: | Ligne 422: | ||
├── __init__.py | ├── __init__.py | ||
├── __pycache__ | ├── __pycache__ | ||
- | │ ├── __init__.cpython-34.pyc | + | │ ├── __init__.cpython-34.pyc |
- | │ ├── settings.cpython-34.pyc | + | │ ├── settings.cpython-34.pyc |
- | │ ├── urls.cpython-34.pyc | + | │ ├── urls.cpython-34.pyc |
- | │ └── wsgi.cpython-34.pyc | + | │ └── wsgi.cpython-34.pyc |
├── settings.py | ├── settings.py | ||
├── urls.py | ├── urls.py | ||
Ligne 446: | Ligne 449: | ||
</code> | </code> | ||
- | * À savoir : La commande "makemigrations" permet de mettre à jour les polls. | + | * À savoir : La commande "makemigrations" permet de mettre à jour les polls (sorte de script SQL), à partir d'un modèle s'il en existe (voir plus bas). |
<code user>python3 manage.py makemigrations</code> | <code user>python3 manage.py makemigrations</code> | ||
<code retour>No changes detected</code> | <code retour>No changes detected</code> | ||
- | Mais si l'on a crée des modèles, par exemple dans le répertoire "~/Bureau/PremiersProjetsDjango/premierProjet" : | + | </note> |
+ | |||
+ | ===Création de Modèle (c'est presque du code first !)=== | ||
+ | |||
+ | * On se place dans le répertoire "~/Bureau/PremiersProjetsDjango/premierProjet" : | ||
+ | <code user>cd ~/Bureau/PremiersProjetsDjango/premierProjet</code> | ||
+ | |||
+ | * On utilise manage.py pour créé l'arborescence nécessaire à l'utilisation de Modèle : | ||
<code user>python3 manage.py startapp polls</code> | <code user>python3 manage.py startapp polls</code> | ||
+ | |||
+ | Cela a crée le répertoire polls à la racine du dossier consacré au projet django : | ||
+ | |||
+ | <code user>pwd</code> | ||
+ | <code>/home/hypathie/Bureau/PremiersProjetsDjango/premierProjet</code> | ||
+ | |||
+ | <code user>tree</code> | ||
+ | <code> | ||
+ | . | ||
+ | ├── db.sqlite3 | ||
+ | ├── manage.py | ||
+ | ├── polls | ||
+ | │ ├── admin.py | ||
+ | │ ├── apps.py | ||
+ | │ ├── __init__.py | ||
+ | │ ├── migrations | ||
+ | │ │ ├── 0001_initial.py | ||
+ | │ │ ├── __init__.py | ||
+ | │ │ └── __pycache__ | ||
+ | │ │ ├── 0001_initial.cpython-34.pyc | ||
+ | │ │ └── __init__.cpython-34.pyc | ||
+ | │ ├── models.py | ||
+ | │ ├── __pycache__ | ||
+ | │ │ ├── admin.cpython-34.pyc | ||
+ | │ │ ├── __init__.cpython-34.pyc | ||
+ | │ │ └── models.cpython-34.pyc | ||
+ | │ ├── tests.py | ||
+ | │ └── views.py | ||
+ | └── premierProjet | ||
+ | ├── __init__.py | ||
+ | ├── __pycache__ | ||
+ | │ ├── __init__.cpython-34.pyc | ||
+ | │ ├── settings.cpython-34.pyc | ||
+ | │ ├── urls.cpython-34.pyc | ||
+ | │ └── wsgi.cpython-34.pyc | ||
+ | ├── settings.py | ||
+ | ├── urls.py | ||
+ | └── wsgi.py | ||
+ | </code> | ||
+ | |||
+ | * On crée des Modèles dans le fichier models.py : | ||
+ | |||
<code user>vim polls/models.py</code> | <code user>vim polls/models.py</code> | ||
- | <code> | + | <file > |
+ | import datetime | ||
from django.db import models | from django.db import models | ||
+ | from django.utils import timezone | ||
+ | # Create your models here. | ||
class Question(models.Model): | class Question(models.Model): | ||
question_text = models.CharField(max_length=200) | question_text = models.CharField(max_length=200) | ||
pub_date = models.DateTimeField('date published') | pub_date = models.DateTimeField('date published') | ||
+ | def __str__(self): | ||
+ | return self.question_text | ||
+ | def was_published_recently(self): | ||
+ | return self.pub_date >= timezone.now() - datetime.timedelta(days=1) | ||
Ligne 468: | Ligne 528: | ||
choice_text = models.CharField(max_length=200) | choice_text = models.CharField(max_length=200) | ||
votes = models.IntegerField(default=0) | votes = models.IntegerField(default=0) | ||
+ | def __str__(self): | ||
+ | return self.choice_text | ||
+ | </file> | ||
- | </code> | + | * Cette fois la commande "makemigrations" ci-dessous, va créer un script de type SQL de creation et/ou mise à jour de la base de données associées au projet, par défaut ce script est le fichier "polls/migrations/0001_initial.py" : |
- | + | ||
- | alors la commande "makemigrations" ci-dessous, va mettre à jour les Modèles à migrer et les conserver dans le fichier "polls/migrations/0001_initial.py" : | + | |
<code user>python3 manage.py makemigrations polls</code> | <code user>python3 manage.py makemigrations polls</code> | ||
Ligne 483: | Ligne 544: | ||
- | * L'ORM de Django permet de générer un script de création de base de données avec tables, noms et types des champs, clés primaires et cardinalités pour voir le script créé à partir des Modèles python (classe): | + | * L'ORM de Django permet de générer un script de création de base de données avec tables, noms et types des champs, clés primaires et cardinalités...\\ Pour voir le script créé à partir des Modèles python (classe): |
<code user>python3 manage.py sqlmigrate polls 0001</code> | <code user>python3 manage.py sqlmigrate polls 0001</code> | ||
- | * Voir :\\ http://apprendre-python.com/page-django-orm-apprendre-base-donnees-database-queryset-modeles \\ https://docs.djangoproject.com/fr/1.8/intro/tutorial01/ | + | * Mais c'est la commande suivante qui applique les changements apportés aux Models dans la base de données : |
+ | <code user>python3 manage.py migrate</code> | ||
+ | |||
+ | * Il est ensuite possible d'interroger la base de donnée depuis le shell en utilisant les méthodes du Modèle | ||
+ | * Sur "migrate" : https://docs.djangoproject.com/fr/1.8/intro/tutorial01/#database-setup | ||
+ | * Sur "manage.py" : https://docs.djangoproject.com/fr/1.8/ref/django-admin/ | ||
+ | * Explication sur ORM : http://apprendre-python.com/page-django-orm-apprendre-base-donnees-database-queryset-modeles | ||
+ | * Explication sur API : http://sametmax.com/quest-ce-quune-api/ | ||
+ | |||
+ | * Pour utiliser l'API Django depuis un shell python : | ||
+ | |||
+ | <code user>python3 manage.py shell</code> | ||
+ | |||
+ | * Pour s'exercer : https://docs.djangoproject.com/fr/1.8/intro/tutorial01/#playing-with-the-api | ||
- | </note> | ||
=== Création d'un administrateur Django=== | === Création d'un administrateur Django=== | ||
Ligne 521: | Ligne 594: | ||
<code root>ifconfig</code> | <code root>ifconfig</code> | ||
- | * remarque : | + | * remarques : |
- On peut aussi taper dans son navigateur :\\ localhost:8000 ou 0.0.0.0:8000 si l'on a lancé :\\ python3 manage.py runserver 0.0.0.0:8000 | - On peut aussi taper dans son navigateur :\\ localhost:8000 ou 0.0.0.0:8000 si l'on a lancé :\\ python3 manage.py runserver 0.0.0.0:8000 | ||
Ligne 535: | Ligne 608: | ||
{{http://pix.toile-libre.org/upload/original/1449161189.png}} | {{http://pix.toile-libre.org/upload/original/1449161189.png}} | ||
- | ===== Utilisation ===== | + | * Pour apprendre à gérer son site depuis le site d'administration de Django : https://docs.djangoproject.com/fr/1.8/intro/tutorial02/ |
+ | * Le création des Vues : https://docs.djangoproject.com/fr/1.8/intro/tutorial03/#writing-your-first-django-app-part-3 | ||
+ | * Factoriser son code Python : https://docs.djangoproject.com/fr/1.8/intro/tutorial04/#writing-your-first-django-app-part-4 | ||
+ | |||
+ | * Tests automatisés : https://docs.djangoproject.com/fr/1.8/intro/tutorial05/ | ||
+ | |||
+ | * Utiliser du Javascript, du CSS avec Django : https://docs.djangoproject.com/fr/1.8/intro/tutorial06/#writing-your-first-django-app-part-6 | ||
+ | |||
+ | |||
+ | ====Configurer Vim pour Python ==== | ||
+ | |||
+ | * On installe curl | ||
+ | |||
+ | <code root>apt-get install curl</code> | ||
+ | |||
+ | * On installe git : | ||
+ | |||
+ | <code root>apt-get install git-core</code> | ||
+ | |||
+ | * On installe pathogen | ||
+ | |||
+ | Voir : https://github.com/search?utf8=%E2%9C%93&q=pathogen | ||
+ | |||
+ | <code user> | ||
+ | mkdir -p ~/.vim/autoload ~/.vim/bundle && \ | ||
+ | curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim | ||
+ | </code> | ||
+ | |||
+ | * On crée et édite un fichier caché ~/.vimrc : | ||
+ | |||
+ | <code user>vim ~/.vimrc</code> | ||
+ | |||
+ | <file> | ||
+ | execute pathogen#infect() | ||
+ | syntax on | ||
+ | filetype plugin indent on | ||
+ | </file> | ||
+ | |||
+ | pathogen va chercher dans le répertoire bundle les plugin qu'on lui a installé et les utiliser comme si on les avait installé dans le fichier .vimrc | ||
+ | |||
+ | * On installe le module nerdtree : | ||
+ | |||
+ | Voir : https://github.com/scrooloose/nerdtree | ||
+ | |||
+ | <code user>git clone https://github.com/scrooloose/nerdtree.git ~/.vim/bundle/nerdtree</code> | ||
+ | |||
+ | <note tip> | ||
+ | ** | ||
+ | Principales commandes de NERD Tree :** | ||
+ | |||
+ | |||
+ | t: Ouvrir le fichier sélectionné dans un nouvel onglet | ||
+ | i: Ouvrez le fichier sélectionné dans une fenêtre fissure verticale | ||
+ | s: Open the selected file in a vertical split window | ||
+ | I: Commutation de fichiers cachés | ||
+ | m: Pour faire apparaître un menu qui vous permettra d'ajouter rapidement, déplacer(=renomer), copier et supprimer des nœuds (ou fichiers). | ||
+ | R: Actualiser l'arbre, utile si les fichiers ont changés en dehors de Vim | ||
+ | ?: Commutation entre l'aide rapide et l'explorateur NERD Tree | ||
+ | Ctrl +w puis w: Passer de l'explorateur NERD Tree à la fenêtre d'édition des fichiers | ||
+ | |||
+ | </note> | ||
+ | |||
+ | * On installe vim-airLine améliorer le statusline. | ||
+ | |||
+ | <code user>git clone https://github.com/bling/vim-airline.git ~/.vim/bundle/vim-airline</code> | ||
+ | |||
+ | On ajoute la ligne suivante dans ''~./vimrc'' : | ||
+ | |||
+ | <code>let g:airline#extensions#tabline#enabled = 1</code> | ||
+ | |||
+ | <note tip> | ||
+ | * Après avoir ouvert plusieurs fichiers, pour passer d'un fichier à l'autre, le curseur entant placé dans l'encadré d'édition d'un fichier: | ||
+ | |||
+ | - On peut utiliser la commande vim '':register'' puis on choisit son buffer ; | ||
+ | - On peut faire '':bn'' (pour Buffer Next) ou '':bp'' (pour Buffer Prevous) ; | ||
+ | |||
+ | * On peut se faire un racourcit : | ||
+ | |||
+ | - On édite ''~/.vimrc'' | ||
+ | - on ajoute : | ||
+ | |||
+ | <code> | ||
+ | nmap <C-n> :bn<CR> | ||
+ | nmap <C-p> :bp<CR> | ||
+ | </code> | ||
+ | |||
+ | * Pour utiliser la souris | ||
+ | |||
+ | <code> | ||
+ | set mouse=a | ||
+ | </code> | ||
+ | </note> | ||
+ | |||
+ | |||
+ | * Utilisation de la souris pour naviger entre les fenêtres, et sélectionner dans une seule fenêtre (i.e mode visuel de vim) | ||
+ | |||
+ | On édite ''~/.vimrc'' | ||
+ | |||
+ | On ajoute : | ||
+ | <file> | ||
+ | set mouse=a | ||
+ | </file> | ||
+ | |||
+ | * On ajoute le plugin syntastic | ||
+ | |||
+ | Voir : https://github.com/scrooloose/syntastic | ||
+ | |||
+ | <code user>git clone https://github.com/scrooloose/syntastic.git ~/.vim/bundle/syntastic</code> | ||
+ | |||
+ | * On ajoute le plugin tagbar | ||
+ | |||
+ | <code user>git clone https://github.com/majutsushi/tagbar.git ~/.vim/bundle/tagbar</code> | ||
+ | |||
+ | <note tip> | ||
+ | Ajout dans '' ~/.vimrc '' | ||
+ | <code> | ||
+ | "Racourci clavier pour basculer avec Tagbar | ||
+ | nmap <F2> :TagbarToggle<CR> | ||
+ | </code> | ||
+ | </note> | ||
+ | |||
+ | |||
+ | * Ajout de l'autocomplétion : | ||
+ | <note tip> | ||
+ | Ajout dans '' ~/.vimrc '' | ||
+ | <code> | ||
+ | "Pour utiliser un plugin d'autocomplétion | ||
+ | set omnifunc=syntaxComplet#Complete | ||
+ | </code> | ||
+ | </note> | ||
+ | ===== Configurations et installation de Django avec PostgreSQL===== |