2017-02-19 76 views
0

我想用Crispy Forms使我的表单看起来不错。我在forms.py如下:Django脆皮表单提交按钮

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 %} 

然而,我的提交按钮,我叫ISN” t正在显示。我已经阅读了cripsy的形式文档,我似乎无法发现我的实现有什么问题。显示除提交按钮以外的所有内容。有任何想法吗?

回答

4

你的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' 
0

该解决方案为我

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()