样式化基于类的表单字段的替代方法

时间:2017-08-30 16:35:10

标签: django django-forms django-templates

在Django中,将CSS样式应用于forms.py(或等效的)中基于类的表单字段。

我的问题:在Django项目中是否无法以其他方式执行此操作?

即使答案是“不可能”,我也会接受答案。黑客和技巧也是可以接受的。说明性的例子会很棒。

P.S。这是一个Django表单的例子,我在基于类的表单中设置了样式:

class SampleForm(forms.Form):
    description = forms.CharField(max_length=250)

    def __init__(self,*args,**kwargs):
        super(SampleForm, self).__init__(*args,**kwargs)
        self.fields['description'].widget.attrs['class'] = 'btn bcg'
        self.fields['description'].widget.attrs['style'] = 'background-color:#F8F8F8; width:98%; color: #1f8cad;'
        self.fields['description'].widget.attrs['autocomplete'] = 'off'

1 个答案:

答案 0 :(得分:1)

您可以使用template tags

css.py

from django import template
register = template.Library()

@register.filter(name='css')
def css(field, css):
    return field.as_widget(attrs={"style":css})

在你的模板中:

{% load css %}
{{ item.field|css: 'width: 100px' }}

结果可能是

<input id="id_field" name="field" style="width: 100px" type="text" />

如您所见,样式是您的变量(宽度:100px)。你也可以上课。