Versionnage des requirements¶
Initialiser le versionnage avec git et premiers commits¶
Vérifiez que vous avez déjà fait les réglages de base de git (user, email, editeur):
git config --list
Vous devriez avoir user.name, user.email et core.editor de configurés. Sinon :
git config --global user.name "Alice Torvalds"
git config --global user.email "alice@linux.org"
git config --global core.editor emacs
Indication
Vous pouvez choisir un autre éditeur qu’emacs: atom, vscode, vim, etc.
Pour choisir vscode :
editor = code --wait
.gitignore¶
On se place à la racine du projet , on y ajoute un fichier .gitignore contenant:
__pycache__
local_settings.py
Le fichier .gitignore contient les fichiers ou dossiers qui doiventéchapper au versionnage. Ici nous indiquons que tous les dossiers __pycache__ doivent être ignorés ainsi que le fichier local_settings.py qui pourra contenir des informations sensibles (comme des logins et passwd de BD qui n’ont pas à être versionnés).
Puis on initie un dépôt git¶
git init
git add .
Attention
On ne versionne pas le virtualenv (ou conda) Python. Il est propre à chaque environnement et on ne le change pas d’emplacement une fois qu’il est créé !
On peut extraire les dépendances de notre projet (pour l’instant essentiellement une version spécifique de django) avec la sous-commande freeze de pip :
requirements¶
pip freeze > requirements.txt
On stocke ces dépendances dans le fichier requirements.txt qu’il est bon de versionner :
git add requirements.txt
git commit -m "ajout requirements.txt au projet"
Création du projet de base¶
La commande django-admin¶
Permet de créer un projet, une application ou d’inspecter un projet existant (base de données ,etc)
django-admin startproject GestionTaches
Puis consultons l’arborescence du projet créé:
tree GestionTaches
qui donne:
GestionTaches/
|-- GestionTaches
| |-- __init__.py
| |-- __pycache__
| |
| |-- settings.py
| |-- urls.py
| `-- wsgi.py
|-- db.sqlite3
|-- manage.py
sous-commandes de django-admin¶
Sans arguments, donne les sous-commandes disponibles :
Type 'django-admin help <subcommand>' for help on a specific subcommand.
Available subcommands:
[django]
check
compilemessages
createcachetable
dbshell
diffsettings
dumpdata
flush
inspectdb
loaddata
makemessages
makemigrations
migrate
runserver
sendtestemail
shell
showmigrations
sqlflush
sqlmigrate
sqlsequencereset
squashmigrations
startapp
startproject
test
testserver
Note that only Django core commands are listed as settings are not properly configured (error: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.).
Danger
Attention, django-admin et manage.py ne sont pas strictement identiques même si ils sont très semblables. django-admin se charge des tâches administratives et manage.py est créé dans chaque projet que vous réalisez et assure certaines tâches automatiquement.
Lancement du serveur¶
./manage.py runserver
Test du serveur¶
Modif .gitignore¶
La base de données n’a pas normalement vocation à être versionnée. On va donc l’ajouter au .gitignore et commiter.
echo db.sqlite3 >> .gitignore
git commit -am "ajout fichier db au .gitignore"
Création d’une app lesTaches dans le projet¶
django-admin startapp lesTaches
Puis observons l’arborescence obtenue:
tree GestionTaches
qui donne:
GestionTaches/
|-- GestionTaches
| |-- __init__.py
| |-- __pycache__
| |-- settings.py
| |-- urls.py
| `-- wsgi.py
|-- db.sqlite3
|-- manage.py
|-- lesTaches
| |-- __init__.py
| |-- admin.py
| |-- apps.py
| |-- migrations
| | `-- __init__.py
| |-- models.py
| |-- tests.py
| `-- views.py
Commitons
Configuration¶
Editez le fichier settings.py pour y configurer
l’internationalisation
le format de Date par défaut
et ajouter l’application lesTaches aux applications installées
En particulier modifier ou ajouter les lignes suivantes si besoin :
LANGUAGE_CODE = 'fr-fr'
TIME_ZONE = 'Europe/Paris'
USE_I18N = True
USE_L10N = True
USE_TZ = True
DATE_INPUT_FORMATS = ('%d/%m/%Y','%Y-%m-%d')
Puis ajouter notre nouvelle app aux applications chargées par défaut :
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.admindocs',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'lesTaches',
]