2 Stimmen

String als Template-Tag auswerten - Django

Ich habe eine Django-Vorlage, die eine Vorlage-Tag enthält, die eine Variable (shop.id) nimmt und gibt eine von zwei Zeichenfolgen, je nachdem, ob der Shop in einem Datenbankmodell, wie diese ist

{% is_shop_claimed shop.id %}

Die beiden möglichen Zeichenketten, die vom Template-Tag zurückgegeben werden, sind

return '<p>Taken</p>'

または

return '<a href="stackoverflow.com/claim_shop/{{shop.id}}/">Claim shop now</a>'

Wenn der Code ausgeführt wird und die zweite Zeichenkette zurückgegeben wird, erscheint sie in der Vorlage (beim Anzeigen des Seitenquelltextes im Browser) wie

<a href="stackoverflow.com/claim_shop/{{shop.id}}/">Claim shop now</a>

und erscheint im Browser als ein Link wie dieser

Shop jetzt beanspruchen

Das Problem ist dass shop.id in der href wird nicht ausgewertet von der Django-Vorlagen-Engine in eine Zahl umgewandelt.

Der Link sollte z. B. für Shop 123 so aussehen

<a href="stackoverflow.com/claim_shop/123/">Claim shop now</a>

Ich habe die Django-Dokumente für Filter auf die Zeichenfolge in der Vorlage-Tag oder in der Vorlage gelten, so dass die Zeichenfolge nicht escaped, aber kein Glück überprüft.

Ich habe mir angesehen diese aber es scheint, dass es eine einfache Möglichkeit geben sollte, die {{shop.id}} in der Vorlage auszuwerten.

Ich habe auch die Vorlage-Tag, um ein Bool anstelle der beiden Zeichenfolgen zurückgeben, so dass die Präsentation in der Vorlage, wie ich es vorziehen würde, aber mit einer if-Anweisung um eine Vorlage-Tag wie diese

{% if is_shop_claimed shop.id %}
    <p>Taken</p>
{% elif not is_shop_claimed shop.id %}
    <a href="stackoverflow.com/claim_shop/{{shop.id}}/">Claim shop now</a>
{% endif %}

funktioniert nicht, weil ich das Template-Tag nicht in die if-Anweisung einfügen kann.

Irgendwelche Vorschläge, wie man {{shop.id}} dazu bringt, als Zahl ausgewertet zu werden? Für jede Hilfe wäre ich dankbar. Ich lerne Django und Python und ich habe Stunden auf dieses Problem zu verbringen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X