Bonjour,
Étant débutant dans Django, veuillez m'excuser si cela peut paraitre bête...
Je souhaite mettre des variables dans une fonction du view.py en cache (ou du moins les garder en mémoire par la suite):
Le site Django est un site de gestion, pour l'instant il est en développement sur le serveur de dev de Django le tout relié à une base de données Postgresql.
Un exemple d'url : 127.0.0.1:8000/gestion/42/resume
- 42 : est l'id
- /resume montre une page html qui résume l'id 42
Dans mon template "base.html", j'ai créé un block Link. Link à pour but d'afficher des liens si ils existent; montrer les informations disponibles pour la gestion de l'id : 42 a par exemple "tata", "toto" et "titi" de disponible alors que l'id 44 n'a que "toto".
l'id 42 aura donc un lien 127.0.0.1:8000/gestion/42/resume/tata présentant des informations alors que l'id 44 n'aura pas ce lien visible dans son résumé.
Voila pour l'explication du contexte, si vous avez des questions n'hésitez pas !
En ce qui concerne le code :
dans ma fonction resume de view.py :
def resume (request, id):
id = int(id)
...
...
...
countToto = toto.objects.filter(toto_id = id).count()
countTata = tata.objects.filter(tata_id = id).count()
etc...
Maintenant dans mon fichier base.html, dans mon block Link, si countToto (et les autres count) sont différents de 0 alors j'affiche les liens.
Pour l'instant tout ça marche !
Le problème vient quand je vais dans l'url 127.0.0.1:8000/gestion/42/resume/toto, les liens toto, tata (etc...) ne sont plus présent (normal, non définie dans la fonction toto).
toto.html hérite de base.html. Il hérite donc du block Link qui affiche les liens disponibles. Mais comme je suis un peu féniant (et que je trouve cela redondant), je ne veux pas remettre les countToto (etc...) dans ma fonction toto présent dans view.py.
Vous me suivez toujours ?
J'ai alors regardé le chapitre 13 du DjangoBook (ma bible actuelle) mais sans résultats après plusieurs test différents...
Je souhaiterais donc garder les valeurs "count" en mémoire pour ne pas devoir les appeler à chaque page.
Si vous avez des idées, des remarques ou besoin d'informations n'hésitez pas, et merci d'avance.
Partager