2015-09-17 6 views
3

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

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

ответ

1

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

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

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

You can use TAL structure expression to unescape HTML.

E.g. Пример raw_description_mapping.pt для Deform 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, чтобы загрузить переопределены шаблоны деформироваться при построении приложения WSGI с помощью конфигуратора Пирамиды:

from pyramid_deform import configure_zpt_renderer 

    configure_zpt_renderer(["mypackage:templates/deform", "mypackage2.submodule:form/templates/deform"]) 
Смежные вопросы