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 17:18] Hypathie [Mise en place d'un environnement minimal pour utiliser Django] |
utilisateurs:hypathie:tutos:developpement-pyhon-utiliser-django [04/12/2015 11:02] Hypathie [Mise en place d'un environnement minimal pour utiliser Django] |
||
---|---|---|---|
Ligne 222: | Ligne 222: | ||
wheel==0.24.0 | wheel==0.24.0 | ||
</code> | </code> | ||
+ | |||
+ | * **Manuel officiel de pip** : https://pip.pypa.io/en/stable/user_guide/ | ||
</note> | </note> | ||
Ligne 427: | Ligne 429: | ||
<note tip> | <note tip> | ||
- | Le fichier de base de données SQLite3 a été créé a la racine : "db.sqlite3". | ||
- | * À savoir : | + | L'exécution de la commande "manage.py migrate" a permis : |
- | La commande : | + | * de créer à la racine le fichier de base de données nommé par défaut "db.sqlite3"; |
+ | * elle a ajouté au fichier "settings.py " dans la section "INSTALLED_APPS" la ligne : 'polls', | ||
+ | <code retour> | ||
+ | INSTALLED_APPS = ( | ||
+ | 'django.contrib.admin', | ||
+ | 'django.contrib.auth', | ||
+ | 'django.contrib.contenttypes', | ||
+ | 'django.contrib.sessions', | ||
+ | 'django.contrib.messages', | ||
+ | 'django.contrib.staticfiles', | ||
+ | 'polls', | ||
+ | ) | ||
+ | </code> | ||
+ | |||
+ | * À 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> | ||
- | permet de recharger les modifications. | + | </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> | ||
+ | |||
+ | 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> | ||
+ | <file > | ||
+ | import datetime | ||
+ | |||
+ | from django.db import models | ||
+ | from django.utils import timezone | ||
+ | |||
+ | # Create your models here. | ||
+ | |||
+ | class Question(models.Model): | ||
+ | question_text = models.CharField(max_length=200) | ||
+ | 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) | ||
+ | |||
+ | |||
+ | class Choice(models.Model): | ||
+ | question = models.ForeignKey(Question) | ||
+ | choice_text = models.CharField(max_length=200) | ||
+ | votes = models.IntegerField(default=0) | ||
+ | def __str__(self): | ||
+ | return self.choice_text | ||
+ | </file> | ||
+ | ** | ||
+ | * 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" : | ||
+ | |||
+ | <code user>python3 manage.py makemigrations polls</code> | ||
+ | |||
+ | <code>Migrations for 'polls': | ||
+ | 0001_initial.py: | ||
+ | - Create model Choice | ||
+ | - Create model Question | ||
+ | - Add field question to choice</code> | ||
+ | |||
+ | |||
+ | |||
+ | * 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> | ||
+ | |||
+ | * 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 | ||
+ | |||
+ | |||
+ | === Création d'un administrateur Django=== | ||
+ | |||
+ | * On se place de le dossier de son projet Django : | ||
+ | |||
+ | <code user>cd ~/Bureau/PremiersProjetsDjango/premierProjet/</code> | ||
+ | |||
+ | * On crée un administrateur : | ||
+ | |||
+ | <code user>python3 manage.py createsuperuser</code> | ||
+ | |||
+ | <code retour> | ||
+ | Username (leave blank to use 'hypathie'): Hypathie | ||
+ | Email address: hypathie@gmx.fr | ||
+ | Password: | ||
+ | Password (again): | ||
+ | Superuser created successfully. | ||
+ | </code> | ||
+ | |||
+ | * Et maintenant on peut accéder à la gestion de son projet depuis son navigateur : | ||
+ | |||
+ | <code user>python3 manage.py runserver 192.168.0.26:8000</code> | ||
+ | |||
+ | <note tip> | ||
+ | Modifier 192.168.0.26 par l'ip de la machine sur laquelle le projet est installé. | ||
+ | |||
+ | Pour le savoir : | ||
+ | |||
+ | <code root>ifconfig</code> | ||
+ | |||
+ | * remarque : | ||
+ | |||
+ | - 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 | ||
+ | - L'avantage de l'ip de la machine c'est de pouvoir se connecter à son application depuis son navigateur depuis une machine distante. | ||
</note> | </note> | ||
+ | |||
+ | * On tape dans son navigateur par exemple : | ||
+ | |||
+ | <code>192.168.0.26:8000/admin</code> | ||
+ | |||
+ | {{http://pix.toile-libre.org/upload/original/1449160999.png}} | ||
+ | |||
+ | {{http://pix.toile-libre.org/upload/original/1449161189.png}} | ||
===== Utilisation ===== | ===== Utilisation ===== | ||