Шаблонные фильтры Django - невозможно использовать urlize и текстильные цепочки - PullRequest
0 голосов
/ 22 января 2012

Я обнаружил невозможность использования цепных фильтров urlize и текстиля.Потому что фильтр urlize это автоэкранирование кавычек.С другой стороны, невозможно применить urlize после вывода текстиля из-за рекомендации Django:

Если urlize применяется к тексту, который уже содержит разметку HTML, все будет работать не так, как ожидалось.Примените этот фильтр только к простому тексту.

Не работает любая последовательность фильтров:

In [1]: from django.template import Template, Context
In [2]: text = '''"bla":/mo/14086/
   ...: http://bla.com'''
In [3]: Template('{% load markup %}{{ text|textile|urlize }}').render(Context({'text': text}))
Out[3]: u'\t<p><a href="/mo/14086/">bla</a><br />http://bla.com</p>'    
In [4]: Template('{% load markup %}{{ text|urlize|textile }}').render(Context({'text': text}))
Out[4]: u'\t<p>&quot;bla&quot;:/mo/14086/<br /><a href="http://bla.com" rel="nofollow">http://bla.com</a></p>'

Кто-нибудь знает, как использовать оба фильтра вместе?

ОБНОВЛЕНИЕ : Я использую Django версии 1.4 alpha 1 SVN-17347

1 Ответ

0 голосов
/ 22 января 2012

Обходной путь с with:

{% with text|urlize as urlized %}
  {{ urlized|textile }}
{% endwith %}
...