WTForms используют кавычки в Jinja2 - PullRequest
0 голосов
/ 21 мая 2018

У меня есть следующий класс WTForms:

from flask_wtf import FlaskForm
from wtforms import SelectField

class MonitorLevel(FlaskForm):
    monitor = SelectField('Monitor', choices=MONITOR_CHOICES)

, который можно отобразить с помощью следующего кода jinja2:

{{ form.monitor() }}

Однако я хочу выполнить JS-сценарий, когда значение изменяется, поэтому я добавил следующее:

{{ form.monitor(**{'onchange': 'sendForm();'}) }}

Что работает нормально, но теперь я хочу передать переменную (которая является строкой) в качестве аргумента:

{{ form.monitor(**{'onchange': 'sendForm("{}");'.format(variable)}) }}

Однако, это выглядит так:

<select id="monitor" name="monitor" onchange="sendForm(&quot;name&quot;);">...</select>

Итак, я попытался избежать этого, используя функцию safe, но это не работает.Я также пытался избежать цитаты с помощью: \ ", но это тоже не сработало.

Есть идеи добавить цитату в значение dict?

Спасибо ввперед,

1 Ответ

0 голосов
/ 22 мая 2018

Это нормальное поведение, WTForms используют escape(s, quote=True) для визуализации значений атрибутов HTML ( escape-документация )

Вы можете посмотреть функцию def html_params(**kwargs): на Github напрямую Для получения дополнительной информации.

В принципе вам не нужно менять код, потому что:

  1. Javascript по-прежнему работает как чудо, ваш браузер преобразует сущности HTML на лету (sendForm()выполняется onchange).
  2. onchange="sendForm("name");" НЕ является действительным атрибутом HTML, если вы печатаете его без escape(s, quote=True).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...