Résolue

Django : gestion de la portée des variables et du contexte

# Structures conditionnelles # Variables # Django

Gabriel Trouvé

Mentor

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)

Gabriel Trouvé

Mentor

ok merci Thibault !

j'utilise souvent la deuxième.

Mais c'est toujours bien d'avoir un avis au cas où il y aurait une meilleure façon de faire.

bonne soirée ! :)

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.