Une API RESTful construite avec Django et Django REST Framework pour gérer le contenu d'un site web, incluant des fonctionnalités de blog, d'événements et de gestion d'utilisateurs.
- Python 3.8+
- PostgreSQL 12+
- Redis (pour le cache et les files d'attente)
- pip (gestionnaire de paquets Python)
-
Cloner le dépôt
git clone https://github.com/charles-kamga/website_api.git cd website_api -
Configurer l'environnement virtuel
python -m venv venv source venv/bin/activate # Sur Windows: .\venv\Scripts\activate
-
Installer les dépendances
pip install -r requirements.txt
-
Configurer la base de données PostgreSQL
-- Se connecter à PostgreSQL sudo -u postgres psql -- Créer la base de données CREATE DATABASE django_website_db; -- Créer un utilisateur (remplacez les valeurs entre crochets) CREATE USER [db_user] WITH PASSWORD '[votre_mot_de_passe]'; -- Accorder les privilèges GRANT ALL PRIVILEGES ON DATABASE django_website_db TO [db_user];
-
Configurer les variables d'environnement
cp .env.example .env
Modifiez le fichier
.envavec vos paramètres :DB_*: Paramètres de connexion à la base de donnéesSECRET_KEY: Clé secrète Django (générez-en une nouvelle pour la production)EMAIL_*: Configuration SMTP pour les emailsTWILLIO_*: Identifiants Twilio pour la vérification par SMS (optionnel)
-
Appliquer les migrations
python manage.py migrate
-
Créer un superutilisateur (optionnel)
python manage.py createsuperuser
-
Lancer le serveur de développement
python manage.py runserver
L'API sera disponible à l'adresse : http://127.0.0.1:8000/ L'interface d'administration sera disponible à : http://127.0.0.1:8000/admin/
website_api/
├── apps/ # Applications Django
│ ├── blog/ # Gestion des articles de blog
│ ├── events/ # Gestion des événements
│ └── users/ # Gestion des utilisateurs et authentification
├── config/ # Configuration du projet
├── documentation/ # Documentation supplémentaire
├── middlewares/ # Middlewares personnalisés
├── services/ # Logique métier
└── website_api/ # Paramètres principaux du projet
| Variable | Description | Valeur par défaut |
|---|---|---|
DEBUG |
Mode débogage | True en développement, False en production |
SECRET_KEY |
Clé secrète Django | À définir en production |
DB_* |
Paramètres de la base de données | Voir .env.example |
EMAIL_* |
Configuration SMTP | À configurer pour les emails |
REDIS_URL |
URL de connexion à Redis | redis://127.0.0.1:6379 |
TWILLIO_* |
Identifiants Twilio (SMS) | Optionnel |
La documentation de l'API est disponible à l'adresse /api/docs/ lorsque le serveur est en cours d'exécution.
# Exécuter tous les tests
python manage.py test
# Exécuter les tests d'une application spécifique
python manage.py test apps.users- Linting :
flake8 - Formatage :
black - Tri des imports :
isort
Les contributions sont les bienvenues ! Voici comment contribuer :
- Forkez le projet
- Créez une branche pour votre fonctionnalité (
git checkout -b feature/ma-nouvelle-fonctionnalite) - Committez vos changements (
git commit -am 'Ajouter une nouvelle fonctionnalité') - Poussez vers la branche (
git push origin feature/ma-nouvelle-fonctionnalite) - Créez une Pull Request
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
Pour toute question, veuillez ouvrir une issue sur GitHub ou contacter l'équipe de développement.