向 django crispy 表单提交按钮添加一个图标

add an icon to django crispy form submit button

我正在努力处理脆皮窗体上的按钮。除了默认按钮,我还想在里面有一个图标

我现在使用的表格是这样的

class MyForm(forms.ModelForm):

helper = FormHelper()
helper.layout = Layout(
    Div(
        Div(PrependedText('source_text', '<span class="fa fa-user"></span>'), css_class='col-md-6'),
        Div(PrependedText('destination_text','<span class="fa fa-flag-checkered"></span>'), css_class='col-md-6'),
        css_class='row-fluid'),
    Div(
        Div(PrependedText('departure', '<span class="fa fa-clock-o"></span>'), css_class='col-md-3'),
        Div('departure_delta', css_class='col-md-2'),
        Div(Submit('submit', "Neue Fahrt starten", css_class="btn"), css_class="col-md2"),
        css_class='row-fluid'),
)
helper.form_show_labels = False
helper.form_id = 'id_travelshare'

class Meta:

    model = MyModel
    fields = ['source', 'source_text', 'destination',
              'destination_text', 'departure', 'departure_delta']

    widgets = {
        'source': forms.HiddenInput(),
        'destination': forms.HiddenInput(),
        'departure' : forms.DateTimeInput(attrs={'class':'datetimepicker'}),
    }

我想要的是一个里面有图标的按钮。我没有找到这方面的例子。也许有人有。

亲切的回馈

迈克尔

您可以将 CSS class 添加到您的提交按钮,然后使用此 class:

为按钮指定背景图像
Submit('submit', "Neue Fahrt starten", css_class="btn icon-button")

# in your .css file:
.btn.icon-button {
    background-image: url(../../icons/button-arrow-right.png);
}

我可以忍受一个普通的link并用JS提交表单。现在看起来像:

<a href="#" class="btn btn-primary">
        <i class="fa fa-plus" aria-hidden="true"></i>
        Hinzufuegen
</a>

此致

迈克尔

要做到这一点,很难使用内置的提交布局项。相反,最好只使用像这样的通用 layout.HTML 项目:

    self.helper.layout.append(
        layout.HTML('<button type="submit" class="btn btn-primary">'
                    '<span class="fas fa-plus"></span> Apply to change order'
                    '</button>'))

这对我来说非常有效:

PrependedText('price', '<span class="fas fa-lira-sign"></span>')

与上述同样有价值的解决方案相比,这似乎是最简单的方法:-)

您可以使用 StrictButton 创建按钮元素而不是输入并将类型设置为 'submit'。然后你可以把任何你想要的 html 放在按钮里面。

StrictButton('Neue Fahrt starten <i class="fa fa-pencil"></i>', type="submit", css_class="btn")