0

私はこのコードを持っています:

{% if username_is_ok == True %}
    <input type="text" name="inputName" placeholder="Name" required>
{% else %}
    <div class="control-group error">
        <input type="text" name="inputName" placeholder="Name" value="{{ username }}"
               class="text-error" required>
        <span class="help-block text-error">User already exists</span>
    </div>
{% endif %}

そして、デバッガーはそれusername_is_ok == Trueが等しいと言います{bool} True。しかし、それはelseブランチに行き、ページが読み込まれるとエラーメッセージが表示されます。ミスが見当たらず、悔しいです。手伝って頂けますか?ありがとう。

4

1 に答える 1

4

Django テンプレート言語は Python ではなく、最小限のロジックを持つ独自のカスタム「テンプレート言語」です (これは設計によるものです。「コントローラー」ロジックをテンプレートから遠ざけることをお勧めします)。したがって、一部の有効な Python が有効なテンプレート構文ではない可能性があることがわかります。

あなたの例では、テンプレート言語は「True」をリテラルとして評価しようとします。おそらくコンテキストで「True」という名前のキーを定義していないため、例外が発生し、テンプレートは値を python型VariableDoesNotExistとして扱います。None

デバッガーは条件を Django テンプレート言語ではなく Python として評価するため、値は Python に対してテストされ、次のようにTrue評価されます。True

ロジックを機能させるにはTrue、テンプレート コンテキストに追加してみてください。何かのようなもの:{"True": True}

関連:https://stackoverflow.com/a/5672415/927229

于 2013-05-08T02:43:26.353 に答える