Джанго хрустящие формы, перекрывающие макет объектов шаблоны игнорируются - PullRequest
0 голосов
/ 21 ноября 2018

Я применил это , таким образом, у меня есть

self.helper.layout = Layout(
    Field(
    'title', template="mytemplate.html"
    ) ,

В результате мой шаблон не отображается helper.field_template Нет в приведенном ниже коде :

(C: \ myapp \ lib \ crispy_forms \ templatetags \ crispy_forms_filters.py):

@register.filter(name='as_crispy_field')
def as_crispy_field(field, template_pack=TEMPLATE_PACK, label_class="", field_class=""):
    """
    Renders a form field like a django-crispy-forms field::

        {% load crispy_forms_tags %}
        {{ form.field|as_crispy_field }}

    or::

        {{ form.field|as_crispy_field:"bootstrap" }}
    """
    if not isinstance(field, forms.BoundField) and settings.DEBUG:
        raise CrispyError('|as_crispy_field got passed an invalid or inexistent field')

    attributes = {
        'field': field,
        'form_show_errors': True,
        'form_show_labels': True,
        'label_class': label_class,
        'field_class': field_class,
    }
    helper = getattr(field.form, 'helper', None)

    template_path = None
    if helper is not None:
        attributes.update(helper.get_attributes(template_pack))
        template_path = helper.field_template
    if not template_path:
        template_path = '%s/field.html' % template_pack
    template = get_template(template_path)

    c = Context(attributes).flatten()
    return template.render(c)

если я изменю helper.field_name при отладке на mytemplate.html, я вижу, что он отображается с успехом.

Вопрос в том, что может быть причиной того, что мой шаблон игнорируется?

Важное примечание , моя форма расширяется:

class RoomForm(ModelForm)

, где ModelForm - этокак здесь


В моей форме я отображаю с:

  {{ form.title | as_crispy_field }}

и соответствующая часть моего взгляда:

  form = RoomForm(None, prefix="submit-room" )                   
  return render(request, 'edit_room.html', { 'form': form })

наконец, mytemplate.html, скопированный «везде»: C:\myapp\lib\crispy_forms\templates\bootstrap4 и C:\myapp\templates\mytemplate.html

{% load custom_tags %}
<div>tutu</div>
<div>{{field}}</div> 

1 Ответ

0 голосов
/ 21 ноября 2018

Я не хочу менять цель вопроса на большую, чтобы я мог ответить на нее с помощью входных данных, которые я получил:

self.helper.layout = Layout(
    Field(
    'title', template="mytemplate.html"
    ) 

Успешно устанавливает шаблон отдельных полей, но as_crispy_field это не волнует, новместо этого он принимает значение шаблона формы.

Если я выполняю рендеринг как с формой, он отлично работает.

{% crispy form %}
...