Django : gestion de la portée des variables et du contexte
Bonsoir,
Imaginons que l'on est dans une vue Django, avec une condition if avec une variable que l'on souhaite retourner dans le contexte.
En soi ce n'est pas possible car la variable n'est disponible que dans le bloc conditionnelle.
Vous gérez ça comment vous ? En initialisant un contexte vide en début de vue ? Ou autrement ?
Merci d'avance
Salut Gab !
Tu as plusieurs façons de faire ça :)
Première façon
Tu modifies ton dictionnaire context dans ta condition. Simple, mais tu peux te retrouver avec un cas de figure dans lequel "articles" n'existe pas dans ton contexte, ce qui n'est pas forcément grave (ça dépend des situations). Tu peux afficher une variable qui n'existe pas dans ton contexte dans le template sans avoir d'erreur. Mais à éviter quand même.
def foo(request):
context = {}
if True:
context["articles"] = Articles.objects.all()
return render(request, 'index.html', context=context)
Deuxième façon
En initialisant une variables et la modifiant dans ta condition. Utile si tu souhaites avoir du contrôle avec une valeur par défaut.
def foo(request):
articles = []
if True:
articles = Articles.objects.all()
context = {
"articles": articles,
}
return render(request, 'index.html', context=context)
Troisième façon
Avec un opérateur ternaire, similaire à la solution 1, à privilégier pour des cas simples, mais plus difficile à lire parfois.
def foo(request):
context = {
"articles": Article.objects.all() if True else [],
}
return render(request, 'index.html', context=context)
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte