J'ai un modèle Django qui inclut une balise modèle qui prend une variable (shop.id) et renvoie l'une des deux chaînes selon que le magasin est dans un modèle de base de données, comme ceciÉvaluation de la chaîne en tant que balise modèle - Django
{% is_shop_claimed shop.id %}
les deux chaînes possibles retournées par l'étiquette de modèle sont
return '<p>Taken</p>'
ou
return '<a href="/claim_shop/{{shop.id}}/">Claim shop now</a>'
Lorsque le code est exécuté, si la deuxième chaîne est retournée, il apparaît dans le modèle (voir le code source de la page dans le navigateur) comme
<a href="/claim_shop/{{shop.id}}/">Claim shop now</a>
et apparaît dans le navigateur comme un lien comme celui-ci
magasin de réclamation maintenant
le problème est que shop.id dans le href est pas évalué à un certain nombre par le moteur de template Django.
Le lien doit apparaître comme celui-ci pour le magasin 123, par exemple
<a href="/claim_shop/123/">Claim shop now</a>
J'ai vérifié les documents de Django pour filtres à appliquer à la chaîne dans la balise de modèle ou dans le modèle afin que la chaîne est pas échappé mais pas de chance.
J'ai regardé this mais il semble qu'il devrait y avoir une manière simple de faire évaluer {{shop.id}} dans le modèle.
J'ai aussi fait l'étiquette de modèle pour renvoyer un Bool au lieu des deux cordes, laissant la présentation dans le modèle que je préférerais, mais en utilisant une instruction if autour d'une étiquette de modèle comme celui-ci
{% if is_shop_claimed shop.id %}
<p>Taken</p>
{% elif not is_shop_claimed shop.id %}
<a href="/claim_shop/{{shop.id}}/">Claim shop now</a>
{% endif %}
ne fonctionne pas car je ne peux pas mettre la balise template dans l'instruction if.
Des suggestions sur comment obtenir {{shop.id}} à évaluer à un nombre? Toute aide serait appréciée. J'apprends Django et Python et j'ai passé des heures sur ce problème.
Merci @Ingacio Cela a fonctionné et c'était si facile, j'ai raté la solution simple! ;) – paulvs