Utilisez le projet existant dans ce réferentiel
Télécharger le projet
- Installez django et django restframework avec cette commande
pip install django djangorestframework django-filter
- Ensuite accèdez dans le projet avec
cd opt_solution
- Lancez le serveur avec
python manage.py runserver
Pour acceder dans le compte admin voici la procédure
- Ajoutez
/admin
sur l'url http://localhost:8000/ - cas d'usage http://localhost:8000/admin
Voici les identifiants du super utilisateur
- nom d'utilisateur :
elieo
- mot de passe :
open
Pour acceder dans notre api voici la procédure
- Ajoutez
/api
sur l'url http://localhost:8000/ - cas d'usage http://localhost:8000/api
Good@fun
Construire le projet à partir de zéro
Lorsque vous partez d'un projet à zéro procéder ainsi pour créer votre projet
-
Assurez-vous que
Python
est installé sur votre machine pour vérifier si python est correctement installé sur votre machine taper la commandepython --version
-
Assurez-vous d'avoir soit
VSCode
oupycharm
-
Créez un nouveau projet dans l'environnement de développement integré de votre choix
-
Installez django à partir du
terminal
de votre projet
pip install django
-
Créez votre projet
django-admin startproject opt_solution
-
Accèdez dans votre projet
cd opt_solution
-
Créez votre application
django-admin startapp params_basic
-
Ajoutez votre application dans le fichier
settings.py
plus précisement dans le blocINSTALLED_APPS
dans notre cas notre application c'estparams_basic
INSTALLED_APPS =[
'params_basic
'
]
- Créez un super utilisateur pour votre projet
python manage.py createsuperuser
- Migration des données par défauts et de nos futurs donnée
python manage.py makemigrations
python manage.py migrate
- Pour lancez le serveur taper la commande suivante
python manage.py runserver
- Comme dans ce projet nous utilisons des API nous allons installer django rest framework]
pip install djangorestframework
- Ensuite ajouter le package que vous venez d'installez dans le fichier
settings.py
se trouvant dans notre application ajoutezrest_framework
INSTALLED_APPS =[
'rest_framework
'
]
Qu'est-ce que sait un model ?
Un modèle est la source unique et définitive d'informations sur vos données . Il contient les champs et comportements essentiels des données que vous stockez, comme le dit monsieur Hervé le modèle c'est la couche logique de nos donnée.
- Importation
from django.db import models
- Structure de la classe
class
TimeStampModel
(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)class Meta:
abstract = True
class
Option
(TimeStampModel):
libelleOption = models.CharField(max_length=100, null=True, blank=True)
def __str__(self):
return self.libelleOption
Qu'est-ce que sait un serializer ?
Les sérialiseurs sont utilisés pour convertir des types de données complexes, tels que les instances de modèle Django, en types de données Python qui peuvent être facilement restitués en JSON, XML ou d'autres types de contenu . Les sérialiseurs assurent également la désérialisation, permettant aux données analysées d'être reconverties en types complexes après avoir d'abord validé les données entrantes.
-
Créez un fichier serializers.py dans votre application
-
Importation
from rest_framework import
serializers
from .models importOption
- Structure de la classe
class
OptionSerializer
(serializers
.ModelSerializer):
classMeta
:
model =Option
# Afficher tous les champs
fields = '__all__
'
# Afficher des champs personalisés
fields = ['libelleOption
','Autrechamps
']
admin.site.register(Option)
...
- Importation
from .serializer import
OptionSerializer
from .models importOption
class OptionViewSet(viewsets.ModelViewSet):
queryset = Option.objects.all()
serializer_class = OptionSerializer
- url.py dans ce fichier nous définirons un router pour permettre le routage de nos differentes viewset
- Structure du code
from rest_framework import routers
from .views import OptionViewSet\router = routers.DefaultRouter()
router.register(r'option', OptionViewSet)
urlpatterns = router.urls
Inclure votre fichier url.py contenant le routage des differents vues dans votre fichier urls.py se trouvant la repertoire principal du projet
- Structure du code
from django.contrib import admin
from django.urls import path, includeurlpatterns = [
path('admin/', admin.site.urls),
path('api/', include('params_basic.url'))
]
- Lancez votre serveur depuis le terminal avec
- notre mini simple api se trouve dans la route
/api
python manage.py runserver
- Quelques méthodes
POST
GET
PUT
DELETE
Les routeurs par défaut inclus dans le framework REST fourniront des routes pour un ensemble standard d'actions
Ameliorant notre ViewSet avec ces méthodes inclut par défaut dans notre ViewSet
create
list
update
destroy
retrieve
- Importation
from rest_framework import viewsets, permissions, status
from rest_framework.response import Response
from .serializer importOptionSerializer
from .models importOption
class OptionViewSet(viewsets.ModelViewSet):
queryset = Option.objects.all()
serializer_class = OptionSerializer
# Protection de la route avec l'authentification
permission_classes = [permissions.IsAuthenticated]
defcreate
(self, request, *args, **kwargs):
serializer = OptionSerializer(data=request.data)
if serializer.is_valid():
return Response(status=status.HTTP_201_CREATED, data={"message": "Enregistrement réussi avec succès",'option': serializer.data})
return Response({'message': serializer.errors}, status=status.HTTP_400_BAD_REQUEST)
deflist
(self, request, *args, **kwargs):
option = Option.objects.all()
serializer = OptionSerializer(option, many=True)
return Response(data={'options': serializer.data})
defupdate
(self, request, *args, **kwargs):
option = self.get_object()
serializer = SectionSerializer(option, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(data={"message": "Modification réussie avec succès", 'option': serializer.data}, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
defdestroy
(self, request, *args, **kwargs):
option = self.get_object()
option.delete()
return Response(status=status.HTTP_204_NO_CONTENT, data={"message": "Suppression réussie avec succès"})