2013-02-21 10 views
0

У меня есть следующие в моем HTML файле:Джанго, если оператор не работает, как ожидалось

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

Что напечатает слово УСПЕХ в браузере (потому что то, то строка содержит)

Но если я делаю следующее:

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

Я нахожу, что инструкция if не работает должным образом.

Почему это?

+0

'repr (result) ==" 'УСПЕХ' ''(например, не другой тип, без пробелов)? –

+0

Вопросы, относящиеся к этому вопросу Ответы на вопросы по этому вопросу уже заданы (http://stackoverflow.com/a/3732245/912039). –

ответ

2

Заявление if прекрасно работает. Ваша проблема должна касаться строки. Может быть, это не строка.

Попробуйте ifequal templatetag:

{% 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

Смежные вопросы