Template pour les projets Django 4.2.
pip, virtualenv et virtualenvwrapper doivent être installés.
Pour générer un template pour le projet "myapp" :
Pour créer l'environnement virtuel, se placer dans le répertoire d'installation du projet:
$ mkvirtualenv myapp
Pour installer Django dans l'environnement virtuel:
$ pip install "Django>=4.2,<5"
Pour créer le nouveau projet en utilisant le template de la dernière version de django supportée:
$ django-admin startproject --template=https://github.com/unistra/django-drybones/archive/master.zip --extension=html,rst,ini,coveragerc --name=Makefile myapp
Pour une version spécifique:
$ django-admin startproject --template=https://github.com/unistra/django-drybones/archive/refs/heads/django3.2.zip --extension=html,rst,ini,coveragerc --name=Makefile myapp
Pour configurer le projet dans l'environnement virtuel:
$ cd myapp $ setvirtualenvproject $VIRTUAL_ENV $(pwd) # Edition du fichier postactivate $ echo "export DJANGO_SETTINGS_MODULE=myapp.settings.dev" >> $VIRTUAL_ENV/bin/postactivate # Edition du fichier postdeactivate $ echo "unset DJANGO_SETTINGS_MODULE" >> $VIRTUAL_ENV/bin/postdeactivate # Rechargement de l'environnement virtuel $ workon myapp
Pour installer les librairies
$ cdproject $ pip install -r requirements/dev.txt
Pour finaliser l'installation et lancer le serveur:
$ chmod u+x manage.py $ ./manage.py migrate $ ./manage.py runserver
Vous pouvez ajouter une fonction à vos dotfiles pour faciliter la création d'un projet:
# inits project for django-drybone project
# see https://github.com/unistra/django-drybones
# Usage initproject project_name [-p python_version] [-d django_version]
# example initproject -p 3.11 -d 4.2
function initproject () {
unset PYTHON_VERSION
unset DJANGO_VERSION
declare -g PYTHON_VERSION
declare -g PYTHON_PATH=
declare -g PYTHON_VERSION_PATH
local ARGS
test -z "$1" && {
echo -e "Missing argument. Script usage:\n" " initproject project_name [-p python_version] [-d django_version]" "\n example : initproject -p 3.11 -d 3.2 "
return 1
} || PROJECT_NAME=$1
ARGS=$(getopt --long -o "p:d:" "$@")
eval set -- "$ARGS"
while true
do
case "$1" in
(-p) PYTHON_VERSION=$2
shift 2 ;;
(-d) DJANGO_VERSION=$2
shift 2 ;;
(*) break ;;
esac
done
PYTHON_VERSION=${PYTHON_VERSION:=3.10}
DJANGO_VERSION=${DJANGO_VERSION:=4.2}
PYTHON_VERSION_PATH=$( which python$PYTHON_VERSION )
mkvirtualenv "$PROJECT_NAME" -p "$PYTHON_VERSION_PATH" >&2 || {
echo "Virtualenv creation failed" >&2
return 1
}
workon "$PROJECT_NAME"
pip install "Django==$DJANGO_VERSION" || {
echo "Django installation failed" >&2
return 1
}
django-admin startproject --template="https://github.com/unistra/django-drybones/archive/refs/heads/django$DJANGO_VERSION.zip" --extension=html,rst,ini,coveragerc --name=Makefile "$PROJECT_NAME" >&2 || {
echo "Project creation failed (maybe wrong django version)" >&2
return 1
}
cd "$PROJECT_NAME" || {
echo "No app directory" >&2
return 1
}
setvirtualenvproject "$VIRTUAL_ENV" "$PWD"
echo "export DJANGO_SETTINGS_MODULE=$PROJECT_NAME.settings.dev" >> "$VIRTUAL_ENV/bin/postactivate"
echo "unset DJANGO_SETTINGS_MODULE" >> "$VIRTUAL_ENV/bin/postdeactivate"
workon "$PROJECT_NAME"
chmod +x manage.py
pip install -r requirements/dev.txt
}
Et ensuite pour creer le virtualenv, installer django et initialiser le projet:
$ initproject mon_projet
pour preciser la version de python et/ou de django -p pour la version de python et -d pour la version de django:
$ initproject mon_projet -p 3.12 -d 4.2