Liste de commandes non-exhaustive bien sûr, et surtout propre à mon usage personnel (sous Windows). Ce mémo est lié à l'article À la découverte de Django et GeoDjango.

Créer un projet Django (un site)

Sous Windows :

python -m django startproject mon_projet

Sous Linux :

django-admin startproject mon_projet

Sous Linux mais avec des versions anciennes, parfois :

django-admin.py startproject mon_projet

Créer une app Django (une fonctionnalité du site)

Placez-vous dans votre projet, changez le nom d'app souhaité, puis :

python manage.py startapp mon_appli

À chaque fois qu'il faut se placer dans le répertoire de votre projet Django, c'est pour utiliser le fichier manage.py, qui permet d'appeler Python directement à partir de votre projet personnel, pourtant situé hors de l'environnement virtuel.

Créer un super-utilisateur Django

Une fois que l'accès à votre base de données est correctement configuré, placez -vous dans votre projet puis :

python manage.py createsuperuser

Suivez les instructions de création d'un nom d'utilisateur,email et mot de passe.

Collecter les fichiers statiques

python manage.py collectstatic

Connaître la locale de Django

Dans votre projet Django :

locale

Il y a aussi :

locale -a

Connaître la version de Django

python -m django --version

Mettre à jour Django

pip install -U Django

Lister les packages obsolètes avec pip

pip list -o

Connaître la version de Python

python --version

Ou alors, rentrez dans Python (python à la racine) puis :

import django; print(django.get_version())

Connaître l'emplacement du répertoire Python

Pratique quand on utilise un IDE ou un environnement virtuel :

>>> import os
>>> import sys
>>> os.path.dirname(sys.executable)

Déclarer Postgres dans settings.py

Si GDAL et les autres packages nécessaires à PostGIS sont installés :

DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': 'nom_de_bdd',
'USER': 'votre_user_bdd',
'PASSWORD': 'votre_mot_de_passe_de_user_bdd',
'HOST': 'votre_host_distant_ou_localhost',
}
}

Ou alors plus simplement (sans PostGIS, Postgres uniquement) :

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mysite',
'USER': 'postgres',
'PASSWORD': 'admin',
'HOST': 'localhost',
}
}

L'utilisation de Psycopg est parfois requise (pour PostGIS uniquement je crois, voir plus bas).

Déclarer les INSTALLED_APPS

Dans les anciennes version de Django (<=1.6), la dernière ligne :

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
...
'carto',
]

Dans les versions plus récentes (1.9 notamment) :

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
...
'carto.apps.CartoConfig',
]

Déclarer GeoDjango

Il s'agit d'une INSTALLED_APPS :

'django.contrib.gis',

Démarrer le serveur de développement

Placez-vous dans le répertoire d'un projet Django puis exécutez :

python manage.py runserver

Votre serveur sera accessible à l'adresse http://127.0.0.1:8000.

Démarrer le serveur de développement chez Alwaysdata

Placez-vous dans le répertoire d'un projet Django puis exécutez par exemple (changez le nom de compte bien sûr, ainsi que le port) :

./manage.py runserver ssh-hinot.alwaysdata.net:14380

Votre serveur sera par exemple accessible à l'adresse http://ssh-hinot.alwaysdata.net:14380/.

Éteindre le serveur de développement/Sortir du serveur de développement

Ctrl+c

Générer les tables des INSTALLED_APPS

Dernière version de Django/Python :

python manage.py makemigrations 

Puis :

python manage.py migrate

Réinitialiser les migration d'une app

python manage.py reset_migration myApp

Installer Psycopg

Sous Windows :

python -m pip install psycopg2

Et dans settings.py, pour utiliser Postgres, toujours sous Windows : 

'ENGINE': 'django.db.backends.postgresql',

Modèle de points géométriques

Exemple d'un modèle de points géométriques dans le fichier models.py d'une application d'un projet Django :

from django.contrib.gis.db import models
class Sample(models.Model):

# Champs classiques
name = models.CharField("Name", max_length=100)
author = models.CharField("Author", max_length=100)

# Champ geometrique
geom = models.PointField("Location")

# Chaine du modele
def __str__(self):
return self.name

Ouvrir la console Python

Sous Linux ou Windows, pour ouvrir la console Python directement dans le shell Linux ou Windows, tapez python, la console affiche maintenant >>>, vous être dans la console Python.

Sortir de la console Python

Sous Linux, faites Ctrl+d

Sous Windows, Ctrl+Pause. Sur certains PC, la combinaison Ctrl+c marche aussi.

Optimiser le temps de chargement de formulaires admin un peu lents...

En cas de jointure de type ForeignKey par exemple, pointant sur des tables un peu grosses, les listes déroulantes affichées peuvent parfois être longues à charger.

Il est alors possible de remplacer le widget de type Dropdown par un widget de type Glass Magnifying. Ceci aura l'avantage de ne pas charger chaque objet, sauf après clic sur l'icône, qui lui ouvrira un popup sur la table concernée.

Mentionnez simplement un ou des raw_id_field dans les fichiers admin.py, exemple :

class ProspectAdmin(admin.ModelAdmin):
raw_id_fields = ('user',)
admin.site.register(Prospect, ProspectAdmin)

Ou dans un formulaire inline :

class OrganizationInLine(admin.StackedInline):
model = OrganizationProspect
verbose_name_plural = 'Organizations related'
extra = 0
raw_id_fields = ('organization',)

J'ai personnellement vérifié le gain en temps de chargement avant/après: rien à voir !

Et encore plus efficace : autocomplete_fields

Réinitialiser les index des tables Postgres

Quand vous développez un projet, et chargez régulièrement des tables de tests, on finit parfois sur ce type d'erreur :

ERROR: duplicate key value violates unique constraint

Rien de bien méchant, allez voir cette astuce !

Environnement virtuel

pip install virtualenv
pip install virtualenvwrapper-win
mkvirtualenv HelloWold
setprojectdir .