Django
Aperçu
Django est un framework web Python de haut niveau qui encourage un développement rapide et une conception propre et pragmatique. Il inclut un ORM, un panneau d'administration, un système d'authentification et un moteur de templates intégrés.
Démarrage rapide
Créer un dépôt à partir du modèle
Sur votre tableau de bord, allez dans l'onglet Tools & Deployment. Cliquez sur le bouton "New Repository", sélectionnez le modèle Django dans le menu déroulant, saisissez un nom de dépôt et un sous-domaine, puis cliquez sur "Create Repository".
Cloner votre dépôt
git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
Installer les dépendances
pip install -r requirements.txt
Configurer la base de données et exécuter les migrations
Mettez à jour les paramètres de base de données dans settings.py (voir Configuration de la base de données ci-dessous), puis exécutez :
python manage.py migrate
python manage.py runserver
Le serveur s'exécute par défaut sur http://localhost:8000.
Pousser vos modifications
git add .
git commit -m "Initial setup"
git push origin main
Développement local avec Docker
Si vous n'avez pas Python installé localement, vous pouvez utiliser Docker pour exécuter votre application Django.
Exécuter des commandes avec Docker
# Installer les dépendances
docker run --rm -v $(pwd):/app -w /app python:3.12 pip install -r requirements.txt
# Exécuter le serveur de développement
docker run --rm -v $(pwd):/app -w /app -p 8000:8000 python:3.12 sh -c "pip install -r requirements.txt && python manage.py runserver 0.0.0.0:8000"
Configuration de la base de données
La plateforme NStrim met à votre disposition une base de données MySQL/MariaDB. Mettez à jour le paramètre DATABASES dans votre fichier settings.py.
Mettre à jour settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '<username>',
'USER': '<username>',
'PASSWORD': '<password>',
'HOST': 'db.<session-domain>',
'PORT': '3306',
}
}
student01). Consultez la section identifiants de votre tableau de bord pour les valeurs exactes.Structure du projet
├── project/
│ ├── settings.py # Configuration du projet
│ ├── urls.py # Configuration des URL racine
│ └── wsgi.py # Point d'entrée WSGI
├── app/
│ ├── models.py # Modèles de base de données
│ ├── views.py # Fonctions / classes de vue
│ ├── urls.py # Modèles d'URL de l'app
│ ├── serializers.py # Sérialiseurs DRF
│ ├── admin.py # Configuration du panneau admin
│ └── templates/ # Templates HTML
├── static/ # CSS, JS, images
├── manage.py # CLI de gestion Django
├── requirements.txt # Dépendances Python
└── Dockerfile # Config Docker
Tâches courantes
Créer un modèle
from django.db import models
class User(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField(unique=True)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
Créer une vue
from django.http import JsonResponse
from .models import User
def user_list(request):
users = list(User.objects.values('id', 'name', 'email'))
return JsonResponse(users, safe=False)
Configuration des URL
from django.urls import path
from . import views
urlpatterns = [
path('users/', views.user_list, name='user-list'),
]
Commandes utiles
python manage.py runserver
Démarrer le serveur de développement
python manage.py migrate
Exécuter les migrations de base de données
python manage.py makemigrations
Créer de nouvelles migrations à partir des changements de modèle
python manage.py createsuperuser
Créer un utilisateur admin pour le panneau /admin
python manage.py shell
Shell Python interactif avec Django
Dépannage
OperationalError: (2002) Can't connect to MySQL server
Cause : L'hôte de la base de données est incorrect ou non accessible.
Solution : Vérifiez que HOST dans le paramètre DATABASES correspond à l'hôte de la base de données indiqué sur votre tableau de bord.
OperationalError: (1045) Access denied for user
Cause : Nom d'utilisateur ou mot de passe incorrect.
Solution : Vérifiez que USER et PASSWORD dans votre settings.py correspondent exactement aux identifiants de votre tableau de bord.
No module named 'MySQLdb'
Solution : Installez le client MySQL : pip install mysqlclient. Sur macOS, vous pourriez également avoir besoin de : brew install mysql-client.
DisallowedHost: Invalid HTTP_HOST header
Solution : Ajoutez votre domaine de déploiement à ALLOWED_HOSTS dans settings.py : ALLOWED_HOSTS = ['*']