На веб-сайте я строю с Flask Я хочу проверить, является ли переменная None. К моему удивлению, хотя, как-то просто, как это не работает:Как зарегистрировать пользовательский тест в Jinja2 (Flask)?
{% if my_var is not None %}
{{ my_var }}
{% endif %}
это выдает ошибку: TemplateAssertionError: no test named 'None'
. Так следующее this example, я написал простой пользовательский тест:
def is_none(var):
if var is None:
return True
else:
return False
, который я хочу зарегистрироваться в термос следующим образом:
from jinja2 import environment
environment.tests['None'] = is_none
но выдает ошибку, говоря AttributeError: 'module' object has no attribute 'tests'
.
Кто-нибудь знает, что я здесь делаю неправильно? Или документация просто неправильная? Все советы приветствуются!
[EDIT] Хорошо, я получил немного дальше. Теперь я зарегистрировать тест с помощью этого:
from jinja2 import Environment
environment = Environment()
environment.tests['None'] = is_none
, но когда я пытаюсь использовать его в моем шаблоне, я все еще получаю ошибку говоря TemplateAssertionError: no test named 'None'
. Есть идеи?
Вы можете просто использовать [встроенный 'none' тест] (http://jinja.pocoo.org/docs/dev/templates/#none). – dirn
в соответствии с флаговыми документами, чтобы зарегистрировать фильтр jinja2, вам нужно иметь 'app.jinja_env.filters ['None'] = is_none'. Ссылка на документ: нажмите [здесь] (http://flask.pocoo.org/docs/0.10/templating/) –
Да @dirn верна. Вы можете использовать встроенный фильтр jinja2 –