2

私のhtmlファイルには次のものがあります。

{% trans "Result: "%} {{result}} 

ブラウザに SUCCESS という単語が出力されます (文字列に含まれているため)

しかし、私が次のことをした場合:

{% if result == 'SUCCESS' %}
   do something
{% else %} 
   do something else
{% endif %}

if ステートメントが期待どおりに機能しないことがわかりました。

どうしてこれなの??

4

2 に答える 2

3

ifステートメントは正常に機能します。あなたの問題は文字列に関するものでなければなりません。多分それは文字列ではありません。

テンプレートタグを試してifequalください:

{% ifequal result 'SUCCESS' %}
   do something
{% else %} 
   do something else
{% endifequal %}

さまざまなことを試すことができます。ビューで割り当てている場合はresult、同じビューで文字列であることを検証できます。

def my_view(request):
    # ... processing ...
    result = something()

    # Let's make sure it's a string containing 'SUCCESS'
    assert type(result) == str
    assert result == 'SUCCESS'

コンテキスト プロセッサの場合は、同じロジックを適用できます。 https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#ifequal

于 2013-02-21T18:35:09.773 に答える
2

このリンクを確認してください: Django String format。django のドキュメントによると、次の形式を使用する必要があります。

{% if result|stringformat:"s" == 'SUCCESS' %}
   do something
{% else %} 
   do something else
{% endif %}

また

{% if result|stringformat:"s" in 'SUCCESS' %}
       do something
    {% else %} 
       do something else
    {% endif %}

また

{% ifequal result|stringformat:"s" 'SUCCESS' %}
       do something
    {% else %} 
       do something else
    {% endif %}

この問題は変数の型が原因で発生するため、別の文字列と比較する前に文字列に変更する必要があります。

于 2019-05-26T01:46:38.403 に答える