TemplateSyntaxError всякий раз, когда я пытаюсь использовать фильтр в своих шаблонах

testlist-это просто список объектов. Например

testlist.0.name 

просто "Test3"

у меня есть файл Temp.HTML-код

{% extends 'base.html' %}
{% block content %}
{{testlist.0.name | safe}}
{% endblock %}

это все, что есть в temp.html файл и база.html отлично работает со всеми другими html-файлами, которые его используют

temp.HTML дает мне

TemplateSyntaxError at /mytests/
Could not parse the remainder: ' | safe' from 'testlist.0.name | safe'
Request Method: GET
Request URL:    http://127.0.0.1:8000/mytests/
Django Version: 1.4
Exception Type: TemplateSyntaxError
Exception Value:    
Could not parse the remainder: ' | safe' from 'testlist.0.name | safe'

когда я меняю его на:

{% extends 'base.html' %}
{% block content %}
{{testlist.0.lastedited |date:"SHORT_DATE_FORMAT" }} 
{% endblock %}

это дает мне

TemplateSyntaxError at /mytests/
could not parse some characters: testlist.0.lastedited| ||date:"SHORT_DATE_FORMAT"
Request Method: GET
Request URL:    http://127.0.0.1:8000/mytests/
Django Version: 1.4
Exception Type: TemplateSyntaxError
Exception Value:    
Could not parse some characters: testlist.0.lastedited| ||date:"SHORT_DATE_FORMAT"

вы получаете идею. Кажется, что я просто не могу использовать какие-либо фильтры в моем шаблоны django. Я попробовал другие фильтры и все равно получил то же самое. Мне не хватает некоторых параметров, которые позволяют использовать символ канала? Может быть, ключ " | " на моем macbook pro-это не символ трубы, а какой-то другой символ, который django не распознает?

1 ответов


похоже, вам нужно удалить пробел между testlist.0.lastedited и фильтра. Попробуйте что-то вроде:

{% extends 'base.html' %}
{% block content %}
{{testlist.0.name|safe}}
{% endblock %}

Я предполагаю, что это ваша проблема, так как в документах у них нет пробелов, и они анализируют шаблон как строку или что-то близкое к ней, поэтому пробелы могут повлиять на него.

пример шаблона