Разрешить необработанный HTML в полях описания формы Deform

Как бы вы запретили Deform экранировать HTML в заголовках или описаниях полей при рендеринге? В настоящее время моим лучшим решением является поиск/замена возвращенной отображаемой строки HTML тем, что мне нужно.

Деформация по умолчанию будет экранировать все символы HTML в объекты HTML, я хочу добавить тег в одно из описаний полей.


person Oli    schedule 17.09.2015    source источник


Ответы (1)


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

Описания размещены mapping.pt. Его нельзя переопределить для каждого виджета — шаблон сопоставления одинаков для всех элементов формы. Вы можете переопределить сопоставление, передав item_template контейнеру виджета (форма, раздел «Форма»). Непроверенный пример:

  # No .pt extension for the template!
  schema = CSRFSchema(widget=deform.widget.FormWidget(item_template="raw_description_mapping"))

Вы можете использовать выражение TAL structure для отмены экранирования HTML.

Например. пример raw_description_mapping.pt для деформации 2:

<tal:def tal:define="title title|field.title;
                     description description|field.description;
                     errormsg errormsg|field.errormsg;
                     item_template item_template|field.widget.item_template"
         i18n:domain="deform">

  <div class="panel panel-default" title="${description}">
    <div class="panel-heading">${title}</div>
    <div class="panel-body">

      <div tal:condition="errormsg" 
           class="clearfix alert alert-message error">
        <p i18n:translate="">
           There was a problem with this section
        </p>
        <p>${errormsg}</p>
      </div>

      <div tal:condition="description">
        ${structure: description}
      </div>

      ${field.start_mapping()}
      <div tal:repeat="child field.children"
           tal:replace="structure child.render_template(item_template)" >
      </div>     
      ${field.end_mapping()}

    </div>
  </div>

</tal:def>

Вам также необходимо изменить приложение Pyramid для загрузки переопределенных шаблонов Deform при создании приложения WSGI с помощью конфигуратора Pyramid:

    from pyramid_deform import configure_zpt_renderer

    configure_zpt_renderer(["mypackage:templates/deform", "mypackage2.submodule:form/templates/deform"])
person Mikko Ohtamaa    schedule 17.09.2015