and*_*ish 2 python forms django django-crispy-forms
我试图用来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'
Run Code Online (Sandbox Code Playgroud)
然后在我的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()})
Run Code Online (Sandbox Code Playgroud)
最后在我的模板中:
{% extends "main/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
<div class="row">
<div class="jumbotron">
{% crispy form %}
</div>
</div>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
但是,没有显示我调用的提交按钮。我已经阅读了这份简略的表单文档,但我似乎发现自己的实现没有任何问题。显示除提交按钮以外的所有内容。有任何想法吗?
您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'
Run Code Online (Sandbox Code Playgroud)
这个解决方案对我有用
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__')
Run Code Online (Sandbox Code Playgroud)
您按照此示例在方法内定义助手__init__,然后将其放入模板中:
{% load crispy_forms_tags %}
{% crispy form %}
Run Code Online (Sandbox Code Playgroud)
在你的观点/行动中你应该有类似的东西
form = BillForm()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3331 次 |
| 最近记录: |