-
Notifications
You must be signed in to change notification settings - Fork 6
1. Paramètres du projet
Les paramètres du projet ont été découpés en trois fichiers selon l'environnement d'utilisation : développement, production et tests.
Les paramètres de base ou communs aux trois environnements se trouvent dans le fichier settings/common.py
.
On y définit par exemple la clé secrète du projet (SECRET_KEY
), la liste des applications utilisées par le projet, les paramètres du REST Framework.
En particulier, nous n'utilisons pas le modèle User
défini par défaut dans Django, et ceci est spécifié par l'option AUTH_USER_MODEL
.
Pour une référence complète des réglages Django, voir la documentation officielle.
Les routes de l'API sont toutes définies dans le fichier urls.py
.
On utilise le routeur par défaut fourni par le REST Framework.
On regroupe ainsi les routes par ViewSet
.
Il y a également quelques routes liées à l'authentification et aux mots de passe.
Le fichier utils.py
fournit des outils utilisés dans tout le projet.
Dans le cadre d'une utilisation avec un client écrit en JavaScript, il était nécessaire d'identifier le type des ressources fournies par l'API.
Par exemple, un objet User
sera sérialisé et renvoyé avec un champ _type
de type VirtualField
ayant la valeur "User"
.
permission_logic
définit un décorateur à appliquer à un modèle, dans le but de spécifier la logique de permissions à employer sur ce modèle (par bar ou non, etc.).
Pour gérer globalement l'application, on a recours à un bar "root" qui n'est pas associé à une section sportive.
On récupère ce bar dans le code à l'aide de la fonction get_root_bar()
.
Les requêtes envoyées à l'API sont très souvent liées à un bar spécifique.
Pour réduire la répétition de code, chaque requête est interceptée par le BarMiddleware
.
Ce middleware vérifie si la requête contient un paramètre GET bar
et attache, le cas échéant, l'instance du modèle Bar
correspondant à la requête avant qu'elle ne suive son cycle de vie.
Il arrive régulièrement qu'un champ d'un modèle nouvellement créé doive être rempli avec l'utilisateur effectuant la requête ou le bar dans lequel la requête est effectuée.
On dispose de deux classes qui permettent de le faire simplement : CurrentUserCreateOnlyDefault
et CurrentBarCreateOnlyDefault
.
Elles s'utilisent en général comme suit, dans un serializer :
user = serializers.PrimaryKeyRelatedField(read_only=True, default=CurrentUserCreateOnlyDefault())
Essentiellement utilisée pour loguer les connexions au site, la fonction get_client_ip(request)
renvoie l'IP de la personne qui effectue la requête.