2016-02-16 5 views
0

Я написал это простые теги:Django. Дважды строку в кавычках в двойных кавычках второй раз

@register.simple_tag(name='is_active', takes_context=True) 
def is_active(context, url_name): 
    if reverse(url_name) == context.request.path: 
     return 'class="active"' 
    return '' 

И в шаблоне:

<li {% is_active 'home_page' %}> 

На сервере разработки это оказанной следующим образом:

<li class="active"> 

Но на производственном сервере с UWSGI он отображается с дублированными двойными кавычками:

<li class=""active""> 

UPD: Поджигатель визуализации & Quot как». На самом деле это выглядит следующим образом:

<li class="&quot;active&quot;"> 

Является ли это ошибка в тестовом Джанго сервере? Как я могу избежать этого преобразования?

ответ

0

От Джанго документации simple tags

В отличие от других утилит тегов, simple_tag передает свой выходной сигнал через conditional_escape(), если контекст шаблона находится в режиме autoescape, чтобы обеспечить правильный HTML и защитить вас от XSS уязвимостей.

Если дополнительное экранирование нежелательно, вам необходимо будет использовать mark_safe(), если вы абсолютно уверены, что ваш код не содержит уязвимостей XSS. Для создания небольших фрагментов HTML рекомендуется использовать format_html() вместо mark_safe().

Код:

return format_html('class="active"') 

UPD. Это не ошибка в джанго, это моя ошибка. I local развивается в Django 1.8.7, но на сервере django обновлен до 1.9.2

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