このように、変数 (shop.id) を受け取り、ショップがデータベース モデルにあるかどうかに応じて 2 つの文字列のいずれかを返すテンプレート タグを含む Django テンプレートがあります。
{% is_shop_claimed shop.id %}
template タグによって返される可能性のある 2 つの文字列は次のとおりです。
return '<p>Taken</p>'
また
return '<a href="/claim_shop/{{shop.id}}/">Claim shop now</a>'
コードが実行されると、2 番目の文字列が返された場合、次のようにテンプレートに表示されます (ブラウザーでページ ソースを表示します)。
<a href="/claim_shop/{{shop.id}}/">Claim shop now</a>
このようなリンクとしてブラウザに表示されます
今すぐショップを請求
問題は、href の shop.id が Django テンプレート エンジンによって数値に評価されないことです。
たとえば、ショップ 123 の場合、リンクは次のように表示されます。
<a href="/claim_shop/123/">Claim shop now</a>
文字列がエスケープされないように、テンプレートタグまたはテンプレート内の文字列に適用するフィルターについてDjangoドキュメントを確認しましたが、うまくいきません。
私はこれを見てきましたが、テンプレートで {{shop.id}} を評価する簡単な方法があるはずです。
また、2 つの文字列の代わりに Bool を返すようにテンプレート タグを作成し、テンプレートにプレゼンテーションを残しておきますが、このようにテンプレート タグの周りに if ステートメントを使用します。
{% 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 %}
if ステートメント内にテンプレート タグを配置できないため、機能しません。
{{shop.id}} を数値に評価する方法について何か提案はありますか? どんな助けでも大歓迎です。私は Django と Python を学んでおり、この問題に何時間も費やしています。