Django (Python)
Django fonctionne sur Kavio, avec quelques réglages à connaître.
1. Variables d'environnement
Dans le panneau de configuration à l'import (ou dans la section Variables d'environnement de la page projet), déclarez :
| Variable | Valeur | Pourquoi |
|---|---|---|
SECRET_KEY | une chaîne aléatoire générée avec python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())" | Requise par Django, absente du dépôt par convention. Votre settings.py doit la lire via os.environ.get('SECRET_KEY', ...) plutôt que de la coder en dur. |
DEBUG | False | Sans elle (ou si votre settings.py code DEBUG = True en dur), vous exposez la page d'erreur détaillée de Django à vos visiteurs. |
2. ALLOWED_HOSTS et le HTTPS
Deux réglages à faire directement dans settings.py, pas via une variable d'environnement Kavio — ils sont propres à Django, pas à la plateforme.
ALLOWED_HOSTS — Kavio attribue un sous-domaine aléatoire à chaque projet (*.onkavio.fr), en plus d'un domaine personnalisé possible. Impossible de le connaître à l'avance :
ALLOWED_HOSTS = ['*']
Pour que la connexion et les formulaires fonctionnent correctement en HTTPS, ajoutez aussi ces deux lignes :
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
CSRF_TRUSTED_ORIGINS = ['https://*.onkavio.fr']
(Si vous utilisez un domaine personnalisé, ajoutez-le aussi à CSRF_TRUSTED_ORIGINS.)
3. Le CSS/JS statique ne s'affiche pas ? Ajoutez collectstatic au démarrage
Kavio détecte Django automatiquement (présence de manage.py) et lance par défaut python manage.py migrate && gunicorn ... votreapp.wsgi:application — mais jamais collectstatic. Sans lui, le CSS de l'admin Django (et de vos propres templates, si vous servez des fichiers statiques) ne se charge pas.
La solution : servez vos statics avec Whitenoise (pip install whitenoise, middleware + STATIC_ROOT), puis surchargez la commande de démarrage avec la variable RAILPACK_START_CMD :
python manage.py collectstatic --noinput && python manage.py migrate && gunicorn --bind 0.0.0.0:${PORT:-8000} votreapp.wsgi:application
⚠️ Cette variable remplace entièrement la commande par défaut — pensez à garder migrate et gunicorn dedans, Kavio ne les rajoute plus une fois que vous la définissez.
Choisir sa version de Python
Sans rien préciser, Kavio utilise une version par défaut (~3.13). Pour en fixer une précise, deux options :
- Un fichier
.python-versionà la racine du dépôt (juste le numéro, ex.3.12.10) — conventionpyenv/mise. Recommandé : versionné avec le code, donc valable aussi en local et lisible par n'importe qui qui récupère le dépôt. - La variable d'environnement
RAILPACK_PYTHON_VERSION— utile seulement si vous voulez une version différente sur Kavio par rapport à votre environnement local.
Ce qui n'est pas nécessaire
Vous n'avez rien à faire concernant :
PORT— automatiquement imposé par la plateforme, votre app n'a pas à le déclarer ni à le lire.- Les migrations — tant que vous gardez
python manage.py migratedans votre commande de démarrage (par défaut ou viaRAILPACK_START_CMD), elles s'appliquent à chaque déploiement. - Le disque applicatif — inscriptible sur Kavio, aucune redirection de fichiers à prévoir.