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

Localhost:8000

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',
]