Sử dụng django-widget-chỉnh , nó rất dễ sử dụng và hoạt động khá tốt.
Nếu không, điều này có thể được thực hiện bằng cách sử dụng bộ lọc mẫu tùy chỉnh.
Xem xét bạn kết xuất biểu mẫu của bạn theo cách này:
<form action="/contact/" method="post">
{{ form.non_field_errors }}
<div class="fieldWrapper">
{{ form.subject.errors }}
<label for="id_subject">Email subject:</label>
{{ form.subject }}
</div>
</form>
form.subject là một thể hiện của BoundField trong đó có các as_widget phương pháp.
bạn có thể tạo bộ lọc tùy chỉnh "addcss" trong "my_app / templatetags / myfilters.py"
from django import template
register = template.Library()
@register.filter(name='addcss')
def addcss(value, arg):
css_classes = value.field.widget.attrs.get('class', '').split(' ')
if css_classes and arg not in css_classes:
css_classes = '%s %s' % (css_classes, arg)
return value.as_widget(attrs={'class': css_classes})
Và sau đó áp dụng bộ lọc của bạn:
{% load myfilters %}
<form action="/contact/" method="post">
{{ form.non_field_errors }}
<div class="fieldWrapper">
{{ form.subject.errors }}
<label for="id_subject">Email subject:</label>
{{ form.subject|addcss:'MyClass' }}
</div>
</form>
form.subjects sau đó sẽ được kết xuất với lớp css "MyClass".
Hy vọng điều này giúp đỡ.
CHỈNH SỬA 1
CHỈNH SỬA 2
- Cập nhật bộ lọc theo nhận xét của Bhyd