Нема описа https://www.duhaz.fr

MrDuhaz d5f5dc3ef6 Mise à jour de 'README.md' пре 2 недеља
blog d50f76f20a CORRECTIONS_ERREURS_SITEMAP пре 2 недеља
core 81f4b9889a indexation error пре 2 недеља
docs d50f76f20a CORRECTIONS_ERREURS_SITEMAP пре 2 недеља
duhaz_blog 81f4b9889a indexation error пре 2 недеља
scripts d50f76f20a CORRECTIONS_ERREURS_SITEMAP пре 2 недеља
static 54392ac7a4 . пре 2 недеља
.env.example 0564f33acc update пре 1 месец
.gitignore 428a750b23 update gitignore пре 2 недеља
README.md d5f5dc3ef6 Mise à jour de 'README.md' пре 2 недеља
manage.py 7396421638 secu with claude пре 1 месец
requirements.txt 0564f33acc update пре 1 месец
test_storage.py a6e34188bc move static upload пре 3 недеља
workspace.code-workspace 7396421638 secu with claude пре 1 месец

README.md

📝 Blog de MrDuhaz !!

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

# 1. Cloner le projet (si pas déjà fait)
cd /Users/duhaz/projets/blog-duhaz

# 2. Lancer l'installation automatique
./scripts/install.sh

# 3. Démarrer le serveur
./scripts/start.sh

Le blog sera accessible sur : http://127.0.0.1:8000/blog/


📋 Installation Manuelle

Si vous préférez installer manuellement :

# 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)
├── docs/              # 📚 Documentation complète
│   ├── README.md      # Index de la documentation
│   ├── DEMARRAGE.md   # Guide de démarrage
│   ├── SECURITE.md    # Guide de sécurité
│   └── ...            # Autres fichiers de documentation
├── scripts/           # 🛠️ Scripts utilitaires
│   ├── README.md      # Index des scripts
│   ├── install.sh     # Installation automatique
│   ├── start.sh       # Démarrage rapide
│   └── ...            # Autres scripts
├── .env               # Variables d'environnement (NON COMMITÉ)
├── .env.example       # Template de configuration
├── requirements.txt   # Dépendances Python
└── manage.py          # Gestionnaire Django

🔧 Configuration

Fichier .env

Copiez .env.example vers .env et configurez :

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

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 docs/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

Documentation Principale

Scripts Utilitaires

Ressources Externes


🛠️ Commandes Utiles

# 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

    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'"

pip install python-dotenv

Erreur de migration

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