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 10:39] Hypathie [Mise en place d'un environnement minimal pour utiliser Django] |
utilisateurs:hypathie:tutos:developpement-pyhon-utiliser-django [04/12/2015 11:55] Hypathie [Configurations et installation de Django] |
||
---|---|---|---|
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 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 suivante 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 : | ||
+ | |||
<code user>python3 manage.py migrate</code> | <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 | * Il est ensuite possible d'interroger la base de donnée depuis le shell en utilisant les méthodes du Modèle | ||
- | * Voir : https://docs.djangoproject.com/fr/1.8/intro/tutorial01/#database-setup | + | * 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/ | * 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 ORM : http://apprendre-python.com/page-django-orm-apprendre-base-donnees-database-queryset-modeles | ||
* Explication sur API : http://sametmax.com/quest-ce-quune-api/ | * Explication sur API : http://sametmax.com/quest-ce-quune-api/ | ||
- | **Pour utiliser l'API Django depuis un shell python :** | + | * Pour utiliser l'API Django depuis un shell python : |
<code user>python3 manage.py shell</code> | <code user>python3 manage.py shell</code> | ||
+ | |||
* Pour s'exercer : https://docs.djangoproject.com/fr/1.8/intro/tutorial01/#playing-with-the-api | * 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 545: | Ligne 604: | ||
{{http://pix.toile-libre.org/upload/original/1449161189.png}} | {{http://pix.toile-libre.org/upload/original/1449161189.png}} | ||
- | |||
- | ===== Utilisation ===== | ||
- | |||