Afficher un tag de template provenant de la base de données

a marqué ce sujet comme résolu.

Bonjour à tous,

Je viens solliciter votre aide car je suis face à un problème dont je ne trouve la solution nulle part.

Je stocke sur un objet Object l’attribut attribute en base. Celui-ci est de type TextField, et peut contenir une URL vers une ressource statique, par exemple :

object.attribute = "Mon attribut avec son image : {% static 'base/images/attribute.png' %}"

Mon problème est que je n’arrive pas à trouver de solution pour afficher cet attribut dans le template de la page : il n’est jamais interprété, et affiché tel quel à chaque fois (comme si la chaîne était échappée).

Après avoir cherché dans la documentation Django, je ne trouve pas de solution pour ce problème… C’est pourquoi je viens vous voir !

Quelqu’un aurait une idée de comment faire ?

Merci d’avance !

+0 -0

Salut !

Dans Django, seul le template lui-même est censé contenir utiliser le langage de templates. C’est pour ça que l’inclusion du contenu de la variable attribute fonctionne, mais ce n’est pas récursif : le contenu des variables n’est pas interprété. Ce serait très lourd à utiliser, et ça pourrait potentiellement poser des problèmes de sécurité (si ce champ attribute est défini par un utilisateur lambda, il pourrait s’en servir pour ajouter du code non-désiré dans la page). En l’occurrence, si le texte Mon attribut avec son image n’est pas censé changer, le mieux est probablement de faire quelque chose comme Mon attribut avec son image : {{object.attribute }} (mais ça n’affichera que l’URL de l’image, il faut utiliser un tag img si tu désires afficher l’image elle-même). Si interpréter le contenu de la variable est important dans ton cas, alors tu peux utiliser manuellement le moteur de templates de Django (et passer son résultat comme variable à ton template) : https://docs.djangoproject.com/fr/2.2/ref/templates/api/#rendering-a-context.

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte