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:56] Hypathie [Mise en place d'un environnement minimal pour utiliser Django] |
utilisateurs:hypathie:tutos:developpement-pyhon-utiliser-django [06/12/2015 08:01] Hypathie [Configurations et installation de Django avec SQLite3] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Développer en Python avec Django ====== | + | ====== Développer en Python 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 ===== | + | ===== Configurations et installation de Django avec SQLite3===== |
- | ==== Choisir sa version de Python sur sa Debian8 ==== | + | ==== Activer Python3 sur Jessie ==== |
Ligne 18: | Ligne 17: | ||
* Charger les différentes versions de Python : | * Charger les différentes versions de Python : | ||
- | - __Pour voir où sont les version de python disponibles :__ | + | - __Pour voir où sont les versions de python disponibles :__ |
<code user> ls /usr/bin/python*</code> | <code user> ls /usr/bin/python*</code> | ||
Ligne 47: | Ligne 46: | ||
<note important> | <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 :\ | + | Si l'on choisit d'utiliser Python3 pour tout le système, il faudra prendre garde de bien installer les outils python3 et non python2 :\ |
Il faudra lancer : | Il faudra lancer : | ||
Ligne 110: | Ligne 109: | ||
- __On veut apprendre à coder en python directement avec le framework Django :__ | - __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,\ | + | 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. | + | les outils python2.xx ou python3.xx servant à utiliser Django s'installent en tant que root pour tout le système. |
- | Et l'installation pour tout le système des outils python et python3 génère des conflits. | + | Or l'installation pour tout le système des outils python2 et des des outils python3 génère des conflits. |
- | Ou toujours travailler dans un **environnement python virtuel** en utilisant " virtualenv" (voir plus bas). | + | L'utilisation d'un **environnement python virtuel** (''virtualen'') (voir plus bas) permet l'utilisation de versions différentes au sein de la même version principale ; (python2.2 et python2.7 **ou** python3.1 et python3.2). |
</note> | </note> | ||
Ligne 225: | Ligne 224: | ||
* **Manuel officiel de pip** : https://pip.pypa.io/en/stable/user_guide/ | * **Manuel officiel de pip** : https://pip.pypa.io/en/stable/user_guide/ | ||
</note> | </note> | ||
+ | |||
==== Création d'un premier projet Django==== | ==== Création d'un premier projet Django==== | ||
Ligne 379: | Ligne 379: | ||
├── __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 419: | ||
├── __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 446: | ||
</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 525: | ||
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 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" :** | + | |
<code user>python3 manage.py makemigrations polls</code> | <code user>python3 manage.py makemigrations polls</code> | ||
Ligne 483: | Ligne 541: | ||
- | * 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> | ||
- | * Mais c'est la commande " python manage.py migrate" qui applique les changements apportés aux Models dans la base de données. | + | * Mais c'est la commande suivante qui applique les changements apportés aux Models dans la base de données : |
- | * Voir :\\ http://apprendre-python.com/page-django-orm-apprendre-base-donnees-database-queryset-modeles \\ https://docs.djangoproject.com/fr/1.8/intro/tutorial01/ \\ Sur "manage.py" : https://docs.djangoproject.com/fr/1.8/ref/django-admin/ | + | <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 537: | Ligne 605: | ||
{{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>Pour passer de l'explorateur NERD Tree à la fenêtre d'édition des fichiers : Ctrl +w puis w.</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> | ||
+ | |||
+ | </note> | ||
+ | ===== Configurations et installation de Django avec PostgreSQL===== |