我正在处理Django应用程序。在申请中存在一种缴费表格。我用django模型和django表单创建了表单。但是,当我尝试运行该应用程序时,出现以下错误。
crispy_forms.exceptions.CrispyError: |as_crispy_field got passed an invalid or inexistent field
我不确定自己在做什么错。
django models.py
CONTRIBUTE_CHOICE = (
('Books','Books'),('Renovation','Renovation'),('Other','Other'),)
class Contribute(models.Model):
firstName = models.CharField(max_length=50)
lastName = models.CharField(max_length=50)
email = models.EmailField(max_length=100)
contribution = models.CharField(max_length=100,choices=CONTRIBUTE_CHOICE)
def publish(self):
self.save()
def __str__(self):
return self.firstName
djangoforms.py
from .models import Contribute
CONTRIBUTE_CHOICE = (
('Books',)
class ContributeForm(forms.ModelForm):
contribution = forms.ChoiceField(choices=CONTRIBUTE_CHOICE,required=True )
class Meta:
model = Contribute
widgets = {
'firstName': forms.TextInput(attrs={'placeholder': 'First Name'}),'lastName': forms.TextInput(attrs={'placeholder': 'Last Name'}),'email': forms.TextInput(attrs={'placeholder': 'Email'}),}
fields = ('firstName','lastName','email','contribution')
django views.py
from .forms import ContributeForm
def donate(request):
if request.method == "POST":
contributeForm = ContributeForm(request.POST)
if contributeForm.is_valid():
post = contributeForm.save(commit=False)
post.save()
return redirect('home')
else:
contributeForm = ContributeForm()
context = {'contributeForm': contributeForm}
return render(request,'donate.html',context)
donate.html模板
<form class='contribution_form' method="post">
{% csrf_token %}
<div class="row">
<div class="col">
{{ contributeForm.firstName|as_crispy_field }}
</div>
<div class="col">
{{ contributeForm.lastName|as_crispy_field }}
</div>
</div>
{{ contributeForm.email|as_crispy_field }}
{{ contributeForm.contribution|as_crispy_field }}
<button type="submit" class="btn btn-lg">Submit</button>
</form>
This是我创建表单所遵循的链接
[EDIT-1]
我根据答案更改了代码,现在出现以下错误。请帮助我
django.template.exceptions.TemplateSyntaxError: Invalid filter: 'as_crispy_field'