Django crispy forms 'form-inline' 没有按预期工作
Django crispy forms 'form-inline' doesn't works as expected
我已经按照 crispy forms docs 使用 bootstarp4 创建了一个简单的内联表单。但似乎表格没有变成 "inline" 而是 "horizontal".
这是我目前拥有的代码片段以及呈现的网络视图的屏幕截图,
# models.py
from django.db import models
class InlineTestModel(models.Model):
name = models.CharField(max_length=20)
age = models.IntegerField()
email = models.EmailField()
# form_helper.py
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Submit
class FormHelperBase(FormHelper):
form_inputs = []
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.set_inputs()
def set_inputs(self):
for form_input in self.form_inputs:
self.add_input(form_input)
class TestInlineFormHelper(FormHelperBase):
form_class = 'form-inline'
field_template = 'bootstrap4/layout/inline_field.html'
layout = Layout(
'name', 'age', 'email'
)
form_inputs = [
Submit('Save', 'Save', css_class='button white')
]
# forms.py
from django import forms
class TestInlineForm(forms.ModelForm):
helper = TestInlineFormHelper()
class Meta:
model = InlineTestModel
fields = '__all__'
# views.py
from django.views import generic
from django.urls import reverse
class TestInlineAddView(generic.CreateView):
model = InlineTestModel
form_class = TestInlineForm
template_name = 'app_name/test_inline_add.html'
def get_success_url(self):
return reverse('app_name:success_url')
# template
{% extends 'expenses/base.html' %}
{% load static %}
{% load crispy_forms_tags %}
{% block form_body %}
<form method="post">{% csrf_token %}
{% crispy form %}
</form>
{% endblock %}
呈现的网页视图
问题是,我们不需要在使用 [= 时使用 <form>
...</form>
标签12=] 标签
{% extends 'expenses/base.html' %}
{% load static %}
{% load crispy_forms_tags %}
{% block form_body %}
<strike><form method="post">{% csrf_token %}</strike>
{% crispy form %}
<strike></form></strike>
{% endblock %}
简而言之,它只需要一行,如
{% extends 'expenses/base.html' %}
{% load static %}
{% load crispy_forms_tags %}
<b>{% crispy form %}</b>
我已经按照 crispy forms docs 使用 bootstarp4 创建了一个简单的内联表单。但似乎表格没有变成 "inline" 而是 "horizontal".
这是我目前拥有的代码片段以及呈现的网络视图的屏幕截图,
# models.py
from django.db import models
class InlineTestModel(models.Model):
name = models.CharField(max_length=20)
age = models.IntegerField()
email = models.EmailField()
# form_helper.py
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Submit
class FormHelperBase(FormHelper):
form_inputs = []
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.set_inputs()
def set_inputs(self):
for form_input in self.form_inputs:
self.add_input(form_input)
class TestInlineFormHelper(FormHelperBase):
form_class = 'form-inline'
field_template = 'bootstrap4/layout/inline_field.html'
layout = Layout(
'name', 'age', 'email'
)
form_inputs = [
Submit('Save', 'Save', css_class='button white')
]
# forms.py
from django import forms
class TestInlineForm(forms.ModelForm):
helper = TestInlineFormHelper()
class Meta:
model = InlineTestModel
fields = '__all__'
# views.py
from django.views import generic
from django.urls import reverse
class TestInlineAddView(generic.CreateView):
model = InlineTestModel
form_class = TestInlineForm
template_name = 'app_name/test_inline_add.html'
def get_success_url(self):
return reverse('app_name:success_url')
# template
{% extends 'expenses/base.html' %}
{% load static %}
{% load crispy_forms_tags %}
{% block form_body %}
<form method="post">{% csrf_token %}
{% crispy form %}
</form>
{% endblock %}
呈现的网页视图
问题是,我们不需要在使用 [= 时使用 <form>
...</form>
标签12=] 标签
{% extends 'expenses/base.html' %}
{% load static %}
{% load crispy_forms_tags %}
{% block form_body %}
<strike><form method="post">{% csrf_token %}</strike>
{% crispy form %}
<strike></form></strike>
{% endblock %}
简而言之,它只需要一行,如
{% extends 'expenses/base.html' %}
{% load static %}
{% load crispy_forms_tags %}
<b>{% crispy form %}</b>