呈现脆皮表格+没有提交按钮

时间:2020-03-23 20:50:02

标签: django django-crispy-forms

我尝试为表单使用松脆的布局。 我遵循了说明和教程,但是因为我是Django和python的新手,所以我迷路了,它不呈现我的表单以及提交按钮。

我定义了模型形式:

class nowyPhForm(forms.ModelForm):
    class Meta:
        model = Phandlowy
        fields = ('imie', 'nazwisko', 'email', 'telefon', 'firma', 'filia')

        def __init__(self, *args, **kwargs):
            super(nowyPhform, self).__init__(*args, **kwargs)
            self.helper = FormHelper()
            self.helper.form_method = 'post'
            self.helper.form_action = 'submit_survey'
            self.helper.add_input(Submit('submit', 'Submit'))
            self.helper.layout = Layout(
                Row(
                    Column('imie', css_class='form-group col-md-6 mb-0'),
                    Column('nawisko', css_class='form-group col-md-6 mb-0'),
                    css_class='form-row'
                ),
                Row(
                    Column('email', css_class='form-group col-md-6 mb-0'),
                    Column('telefon', css_class='form-group col-md-6 mb-0'),
                    css_class='form-row'
                ),
                Row(
                    Column('firma', css_class='form-group col-md-6 mb-0'),
                    Column('filia', css_class='form-group col-md-6 mb-0'),
                    css_class='form-row'
                ),
                Submit('submit', 'Sign in')
            )

和HTML

{% load crispy_forms_tags %}
{% block content %}

  <div class="container">
    {% crispy form %}
  </div>

{% endblock %}

如果有人可以发现问题,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

您必须手动添加提交按钮。脆皮表单仅提供字段UI,即使没有脆皮表单,您也必须手动添加按钮。以下代码段将呈现您的表单。

views.py

from django.shortcuts import render, redirect
from .forms import nowyPhForm

def view(request):
    form = nowyPhForm()
    if request.method == 'POST':
        form = nowyPhForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('some_other_url')
    return render(request,'template.html',{'form':form})

template.html

{% load crispy_forms_tags %}
{% block content %}
<div class="container">
    <form method="POST">
       {% form | crispy %}
       <button type="submit">Submit</button>
    </form>
</div>
{% endblock %}