django-crispy-forms:垂直对齐按钮与字段
django-crispy-forms: Align button with fields vertically
我一直在努力使用 django-crispy-forms 在一行中获取我的表单(包括按钮)。
我最终找到了解决方案,但我决定将问题与答案一起发布,以防其他人遇到同样的问题。
forms.py
中的代码如下:
class SearchForm(forms.Form):
[...]
def __init__(self, *args, **kwargs):
super(SearchForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_class = 'form-inline'
self.helper.layout = Layout(
Field('From', placeholder='From'),
Field('To', placeholder='To'),
Field('Date', placeholder='Date'),
ButtonHolder(Submit('submit', 'Search', css_class='btn btn-primary'))
)
但是按钮出现在第二行。
我试过替代方案
self.helper.form_class = 'form-horizontal'
但没有区别。
我找到了基于 this post in github 的解决方案。
也就是使用FormActions对象适配Layout:
self.helper.layout = Layout(
Field('From', placeholder='From'),
Field('To', placeholder='To'),
Field('Date', placeholder='Date'),
FormActions(ButtonHolder(Submit('submit', 'Search', css_class='btn btn-primary')))
)
并且所有字段和按钮都完美对齐:
我一直在努力使用 django-crispy-forms 在一行中获取我的表单(包括按钮)。
我最终找到了解决方案,但我决定将问题与答案一起发布,以防其他人遇到同样的问题。
forms.py
中的代码如下:
class SearchForm(forms.Form):
[...]
def __init__(self, *args, **kwargs):
super(SearchForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_class = 'form-inline'
self.helper.layout = Layout(
Field('From', placeholder='From'),
Field('To', placeholder='To'),
Field('Date', placeholder='Date'),
ButtonHolder(Submit('submit', 'Search', css_class='btn btn-primary'))
)
但是按钮出现在第二行。
我试过替代方案
self.helper.form_class = 'form-horizontal'
但没有区别。
我找到了基于 this post in github 的解决方案。
也就是使用FormActions对象适配Layout:
self.helper.layout = Layout(
Field('From', placeholder='From'),
Field('To', placeholder='To'),
Field('Date', placeholder='Date'),
FormActions(ButtonHolder(Submit('submit', 'Search', css_class='btn btn-primary')))
)
并且所有字段和按钮都完美对齐: