# 📝 Blog Duhaz Blog personnel développé avec Django 5.1 LTS. ## ✨ Nouvelles Fonctionnalités (Octobre 2025) - 🔒 **Sécurité renforcée** : Variables d'environnement, nouvelle SECRET_KEY - 🚀 **Django 5.1 LTS** : Mise à jour depuis Django 3.2 - 📦 **Gestion moderne** : Scripts d'installation automatisés - 🔧 **Code nettoyé** : Suppression des méthodes dépréciées Python 2 --- ## 🚀 Installation Rapide ### Prérequis - Python 3.10+ - pip ### Installation ```bash # 1. Cloner le projet (si pas déjà fait) cd /Users/duhaz/projets/blog-duhaz # 2. Lancer l'installation automatique ./install.sh # 3. Démarrer le serveur ./start.sh ``` Le blog sera accessible sur : **http://127.0.0.1:8000/blog/** --- ## 📋 Installation Manuelle Si vous préférez installer manuellement : ```bash # 1. Créer l'environnement virtuel python3 -m venv venv source venv/bin/activate # 2. Installer les dépendances pip install -r requirements.txt # 3. Configurer l'environnement cp .env.example .env # Éditer .env avec vos paramètres # 4. Appliquer les migrations python manage.py makemigrations python manage.py migrate # 5. Créer un superutilisateur (optionnel) python manage.py createsuperuser # 6. Lancer le serveur python manage.py runserver ``` --- ## 🏗️ Structure du Projet ``` blog-duhaz/ ├── blog/ # Application blog │ ├── models.py # Modèles Article, Catégorie │ ├── views.py # Vues du blog │ └── templates/ # Templates du blog ├── core/ # Application core (pages statiques) │ ├── models.py # Modèles Page, SpeedDial, Contact │ ├── views.py # Vues génériques │ └── templates/ # Templates globaux ├── duhaz_blog/ # Configuration Django │ ├── settings.py # Paramètres (sécurisés) │ └── urls.py # Routes principales ├── static/ # Fichiers statiques (CSS, JS, images) ├── .env # Variables d'environnement (NON COMMITÉ) ├── .env.example # Template de configuration ├── requirements.txt # Dépendances Python ├── install.sh # Script d'installation └── start.sh # Script de démarrage ``` --- ## 🔧 Configuration ### Fichier `.env` Copiez `.env.example` vers `.env` et configurez : ```env SECRET_KEY=votre-cle-secrete-unique DEBUG=True ALLOWED_HOSTS=localhost,127.0.0.1 DATABASE_NAME=db.sqlite3 ``` ### Générer une nouvelle SECRET_KEY ```bash python3 -c "import secrets; print(''.join(secrets.choice('abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)') for i in range(50)))" ``` --- ## 🎨 Fonctionnalités ### Blog - ✍️ Création et gestion d'articles - 🏷️ Catégorisation des articles - 🔍 Recherche dans les articles - 📊 Compteur de lectures - 📅 Publication programmée - 🖼️ Support des images ### Pages Statiques - 📄 Création de pages personnalisées - 🎯 SpeedDial (raccourcis) - 📮 Formulaire de contact - 🔐 Pages protégées par authentification ### Administration - 👨‍💼 Interface d'administration Django - 📝 Éditeur WYSIWYG (Trumbowyg) - 📤 Import/Export de données - 👥 Gestion des utilisateurs --- ## 🔒 Sécurité Voir le fichier [SECURITE.md](SECURITE.md) pour les détails complets. **Points clés :** - SECRET_KEY stockée dans `.env` (hors Git) - DEBUG=False obligatoire en production - ALLOWED_HOSTS configuré - Protection CSRF activée - Headers de sécurité prêts --- ## 📚 Documentation - [MISE_A_JOUR.md](MISE_A_JOUR.md) - Guide de mise à jour Django 3.2 → 5.1 - [SECURITE.md](SECURITE.md) - Recommandations de sécurité - [Django 5.1 Docs](https://docs.djangoproject.com/en/5.1/) --- ## 🛠️ Commandes Utiles ```bash # Activer l'environnement virtuel source venv/bin/activate # Créer des migrations python manage.py makemigrations # Appliquer les migrations python manage.py migrate # Créer un superutilisateur python manage.py createsuperuser # Collecter les fichiers statiques python manage.py collectstatic # Lancer le serveur de développement python manage.py runserver # Lancer les tests python manage.py test ``` --- ## 🚀 Déploiement en Production ### Checklist avant déploiement 1. **Configuration** ```env DEBUG=False SECRET_KEY=nouvelle-cle-ultra-securisee ALLOWED_HOSTS=votredomaine.com,www.votredomaine.com ``` 2. **Base de données** - Migrer vers PostgreSQL (recommandé) - Configurer les sauvegardes automatiques 3. **Sécurité** - Décommenter les paramètres de sécurité dans `settings.py` - Configurer HTTPS (Let's Encrypt) - Activer les headers de sécurité 4. **Performance** - Configurer un cache (Redis) - Utiliser Gunicorn comme serveur WSGI - Servir les fichiers statiques avec WhiteNoise ou Nginx 5. **Monitoring** - Configurer les logs - Mettre en place des alertes - Surveiller les performances --- ## 🐛 Dépannage ### Erreur "No module named 'dotenv'" ```bash pip install python-dotenv ``` ### Erreur de migration ```bash python manage.py migrate --run-syncdb ``` ### Le serveur ne démarre pas - Vérifiez que `.env` existe - Vérifiez que l'environnement virtuel est activé - Consultez les logs d'erreur --- ## 📝 TODO / Améliorations Futures - [ ] Ajouter des tests unitaires - [ ] Migrer vers PostgreSQL - [ ] Ajouter un système de cache (Redis) - [ ] Optimiser les requêtes (N+1 queries) - [ ] Migrer vers Class-Based Views - [ ] Ajouter une API REST (Django REST Framework) - [ ] Améliorer la validation du contenu HTML (bleach) - [ ] Ajouter pagination AJAX - [ ] Système de commentaires - [ ] Support multilingue --- ## 👤 Auteur **Duhaz** ## 📄 Licence Ce projet est sous licence privée. --- ## 🔗 Liens Utiles - [Django Documentation](https://docs.djangoproject.com/) - [Django Security](https://docs.djangoproject.com/en/5.1/topics/security/) - [Python Best Practices](https://docs.python-guide.org/)