Django Crispy 表单提交按钮
Posted
技术标签:
【中文标题】Django Crispy 表单提交按钮【英文标题】:Django Crispy Form Submit Button 【发布时间】:2017-07-08 23:01:45 【问题描述】:我正在尝试使用Crispy Forms
使我的表单看起来不错。我的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 %
但是,我调用的提交按钮没有显示。我已经阅读了简陋的表单文档,我似乎找不到我的实现有什么问题。显示除了提交按钮之外的所有内容。有什么想法吗?
【问题讨论】:
【参考方案1】:您的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'
【讨论】:
【参考方案2】:这个解决方案对我有用
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()
【讨论】:
以上是关于Django Crispy 表单提交按钮的主要内容,如果未能解决你的问题,请参考以下文章
使用Ajax验证并提交Django表单(django-crispy-forms)
带有两个提交按钮的 Django 表单。 . .一个需要字段,一个不需要