繁体   English   中英

Django Crispy表单提交按钮

[英]Django Crispy Form Submit Button

我正在尝试使用Crispy Forms来使我的表单看起来很好。 我的forms.py有以下forms.py

from django import forms
from .models import Team
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Submit, Layout, Field
from crispy_forms.bootstrap import (
    PrependedText, PrependedAppendedText, FormActions)

class CreateTeamForm(forms.ModelForm):
    class Meta:
        model = Team

        fields = [ 'Project_name', 'Project_number'
                  ]

        helper = FormHelper()
        helper.add_input(Submit('submit', 'Submit', css_class='btn-primary'))

        helper.form_method = 'POST'

然后在我的views.py

def create_team(request):
    if request.method == 'POST':
        form = CreateTeamForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return render('/teams/my_team.html',{''})
    else:
        form = CreateTeamForm()

    return render(request, 'teams/team_form.html', {'form':CreateTeamForm()})

最后在我的模板中:

{% extends "main/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
    <div class="row">
        <div class="jumbotron">
            {% crispy form %}

        </div>
    </div>
{% endblock %}

但是,我调用的提交按钮未显示。 我已阅读了cripsy表单文档,我似乎无法发现我的实现有任何问题。 显示除提交按钮以外的所有内容。 有任何想法吗?

您的FormHelper应该是表单类的属性,而不是它的Meta类。 突显你的部分代码:

class CreateTeamForm(forms.ModelForm):
    class Meta:
        model = Team

        fields = [ 'Project_name', 'Project_number' ]

    helper = FormHelper()
    helper.add_input(Submit('submit', 'Submit', css_class='btn-primary'))
    helper.form_method = 'POST'

这个解决方案对我有用

from django.forms import ModelForm
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Submit

class BillForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super(BillForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.add_input(Submit('submit', 'Submit', css_class='btn-primary'))
        self.helper.form_method = 'POST'

    class Meta:
        model = Bill
        fields = ('__all__')

你在这个例子后面的__init__方法中定义你的助手,然后你把它放在你的模板中:

{% load crispy_forms_tags %}
{% crispy form %}

在你的观点/行动中你应该有类似的东西

form = BillForm()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM