Django - 脆皮形式不显示

Django - crispy form not showing

我正在尝试呈现此表单:

class LoadForm(forms.Form):
    class Meta:
        model = Load

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_tag = False
        self.helper.layout = Layout(
            Row(
                'whouse',
                'supplier',
                'company',
                'product',
                'quantity',
                'unit_price',
                'load_date',
            )
        )

具有以下观点:

def load(request):
    form = LoadForm()
    context = {
        'form': form,
        'title': 'Nuovo Carico',
    }

    return render(request, 'warehouse/load.html', context)

和以下模板:

{% extends "masterpage.html" %}
{% load static %}

{% block headTitle %}
<title>{{title}}</title>
{% endblock %}

{% block contentHead %}
{% endblock %}

{% block contentBody %}
{% load document_tags %}
{% load custom_tags %}
{% load crispy_forms_tags %}

<FORM method="POST" autocomplete="off">
    {{ form.media }}
    {% csrf_token %}

    <div class="alert alert-info">
        {{ title }}
    </div>
    {% crispy form %}
    <input type="submit" class="btn btn-primary margin-left" value="CARICA">


</FORM>

{% endblock %}

由于某些奇怪的原因,表单不会显示,我只看到标题和输入按钮。我试过非常简单的form.as_p,没有脆皮,但还是没有...

通过查看浏览器上的源代码,我看到有一个 div 和 class 'form-row' 但不是其中的形式...

看起来很奇怪。

有什么帮助吗?

非常感谢。

卡罗

您的表单 class 定义如下: class LoadForm(forms.Form): 请注意,这里是 Form 而不是 ModelForm 因此使用 Meta class 和指定 model 没有区别。相反,您想使用 ModelForm [Django docs] 并且还需要在 Meta:

中指定 fieldsexclude
class LoadForm(forms.<b>ModelForm</b>): # `ModelForm` here
    class Meta:
        model = Load
        <b>fields = '__all__'</b> # All fields
    
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_tag = False
        self.helper.layout = Layout(
            Row(
                'whouse',
                'supplier',
                'company',
                'product',
                'quantity',
                'unit_price',
                'load_date',
            )
        )

像这样在模板中调用表单。首先是您在上下文中拥有的表单的名称加上 pipe crispy。对我有用。

</div>
{{form|crispy}}
<input type="submit" class="btn btn-primary margin-left" value="CARICA">