Semaine 11
This commit is contained in:
@@ -0,0 +1,147 @@
|
||||
# Exo 4.1 "Projet Django" - BOICHÉ Gauvain
|
||||
|
||||
Je déclare n'avoir pas utilisé l'IA sur ce projet au profit de la [documentation du cours](https://github.com/Laudroid/Live-Python-Web/blob/main/4-1-5-Cr%C3%A9ation-de-pages-web-simples-et-ge.md) et [celle de Django](https://docs.djangoproject.com/fr/3.1/ref/contrib/auth/).
|
||||
|
||||
# Exo 4.2 "Lister des équipements" - BOICHÉ Gauvain
|
||||
|
||||
Je déclare avoir utilisé l'IA dans ces cadres :
|
||||
|
||||
## Raison 1
|
||||
|
||||
Génération de "list.html"
|
||||
|
||||
### Pourquoi ?
|
||||
|
||||
Je n'aime pas l'HTML.
|
||||
|
||||
### Ce que j'en ai retenu
|
||||
|
||||
Tout le contenu donné semble correct.
|
||||
|
||||
## Raison 2
|
||||
|
||||
Pour déboguer la raison pour laquelle mon fichier "list.html" n'était pas trouvé par le projet.
|
||||
|
||||
### Ce que l'IA m'a répondu
|
||||
|
||||
> The template parc/list.html exists at templates/parc/list.html, but Django's app_directories loader is searching inside each app's own templates/ folder — not the project-level one.
|
||||
|
||||
> Fix: declare the project-level templates directory in TEMPLATES settings.
|
||||
|
||||
### Ce que j'ai rajouté
|
||||
|
||||
De :
|
||||
|
||||
```
|
||||
TEMPLATES = [
|
||||
{
|
||||
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
||||
'DIRS': [],
|
||||
'APP_DIRS': True,
|
||||
'OPTIONS': {
|
||||
'context_processors': [
|
||||
'django.template.context_processors.request',
|
||||
'django.contrib.auth.context_processors.auth',
|
||||
'django.contrib.messages.context_processors.messages',
|
||||
],
|
||||
},
|
||||
},
|
||||
]
|
||||
```
|
||||
|
||||
à :
|
||||
|
||||
```
|
||||
TEMPLATES = [
|
||||
{
|
||||
"BACKEND": "django.template.backends.django.DjangoTemplates",
|
||||
"DIRS": [BASE_DIR / "templates"],
|
||||
"APP_DIRS": True,
|
||||
"OPTIONS": {
|
||||
"context_processors": [
|
||||
"django.template.context_processors.request",
|
||||
"django.contrib.auth.context_processors.auth",
|
||||
"django.contrib.messages.context_processors.messages",
|
||||
],
|
||||
},
|
||||
},
|
||||
]
|
||||
```
|
||||
|
||||
### Conséquences
|
||||
|
||||
Ca ne marchait toujours pas, et l'IA m'a mis sur une piste à la noix qui n'est pas évidente : j'ai réorganisé un peu mon arborescence, et dans `settings.py` je devais faire ça :
|
||||
|
||||
```
|
||||
# BASE_DIR = Path(__file__).resolve().parent.parent # old
|
||||
BASE_DIR = Path(__file__).resolve().parent.parent.parent # new: 4_1/
|
||||
```
|
||||
|
||||
# Exo 5.1 "Exiger Auth" - BOICHÉ Gauvain
|
||||
|
||||
Je déclare n'avoir pas usé d'IA au profit [de la documentation officielle](https://www.django-rest-framework.org/api-guide/authentication/#tokenauthentication).
|
||||
|
||||
Par contre je déclare l'avoir utilisé hier soir pour mettre tout d'a-plomb pour faire marcher l'application, en générant les patrons HTML notamment.
|
||||
|
||||
# Exo 5.2 "Cloisonner" - BOICHÉ Gauvain
|
||||
|
||||
J'allais l'utiliser, mais j'ai décidé de relire le cours pour `perform_create`. Des fois je pense que tout est trop compliqué.
|
||||
|
||||
# Exo 5.3 "Propiétés sensibles"
|
||||
|
||||
Je n'ai pas utilisé d'IA... en fait j'avais déjà fait ça :
|
||||
|
||||
```
|
||||
from rest_framework import serializers
|
||||
from .models import Equipment
|
||||
|
||||
class EquipmentSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Equipment
|
||||
fields = ["id", "hostname", "ip", "is_active"]
|
||||
# fields = ["id", "hostname", "description", "date_ajout", "is_active"]
|
||||
```
|
||||
|
||||
Pris d'un cours précédent. Sécurité béton accidentelle.
|
||||
|
||||
### Si, j'en ai usé : Raison 1
|
||||
|
||||
Je voulais un script qui génère des utilisateurs, les jetons et tout directement après un gros HARD-RESET du projet (restructuration des dossiers)
|
||||
|
||||
### Raison 2
|
||||
|
||||
En voulant créer, depuis le compte "Bob" un équipement avec "owner": "Alice", j'obtiens malgré tout une réponse 201. Maintenant, la sécurité "marche" en soit parce que le "owner" passe à "Bob". Autant il ne peut PAS créer de réponse en tant qu'Alice, autant... et bien ce n'est pas ce que j'ai demandé.
|
||||
|
||||
J'ai passé l'info à une IA et elle a voulu tout ré-écrire pour... permettre à Bob de le faire pour Alice. J'ai reprécisé 4 fois le périmètre, pas moyen de lui faire comprendre.
|
||||
|
||||
J'ai fini par lui insulter ses grands morts et j'ai laissé comme ça.
|
||||
|
||||
# Eco 5.4 "Limiter conso"
|
||||
|
||||
Pas d'IA.
|
||||
|
||||
# Exo 5.5 "Durcir config"
|
||||
|
||||
## Raison 1
|
||||
|
||||
Usage pour bien définir les CORS et les hôtes.
|
||||
|
||||
### Avant
|
||||
|
||||
ALLOWED_HOSTS = ["127.0.0.1", "http://127.0.0.1", "localhost"]
|
||||
CORS_ALLOWED_ORIGINS = ["127.0.0.1", "http://127.0.0.1", "localhost"]
|
||||
|
||||
### Après
|
||||
|
||||
```
|
||||
ALLOWED_HOSTS = ["127.0.0.1", "localhost"]
|
||||
CORS_ALLOWED_ORIGINS = ["http://127.0.0.1:8000", "http://localhost:8000"]
|
||||
```
|
||||
|
||||
## Raison 2
|
||||
|
||||
Pour la journalisation, parce que c'était chaud comme bloc.
|
||||
|
||||
# Exo 5.6
|
||||
|
||||
Pas eu le temps.
|
||||
Reference in New Issue
Block a user