사용 장고 - 위젯 개조하면 되겠 는 사용하기 쉽고 매우 잘 작동합니다.
그렇지 않으면 사용자 지정 템플릿 필터를 사용하여이 작업을 수행 할 수 있습니다.
다음과 같이 양식을 렌더링하는 것을 고려하십시오.
<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는 as_widget 메소드 가있는 BoundField 의 인스턴스입니다 .
"my_app / templatetags / myfilters.py"에서 "addcss"사용자 정의 필터를 만들 수 있습니다
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})
그런 다음 필터를 적용하십시오.
{% 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는 "MyClass"CSS 클래스로 렌더링됩니다.
이 도움을 바랍니다.
편집 1
편집 2