django:如何将css传递给form.as_ul [英] django: how to pass css to form.as_ul
本文介绍了django:如何将css传递给form.as_ul的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的表单是
class Form(forms.Form):
ability = forms.ChoiceField(widget= forms.CheckboxSelectMultiple(), choices = SKILLS, required=False)
我将其显示为 {{Form.as_ul}}
我如何将css ul类传递给这个?我可以在模板中的某个地方做吗?不确定如何工作
how do i pass a css ul class to this? Can i do it somewhere in the template? not sure how this works
推荐答案
不幸的是,你必须创建一个新的小部件,但你可以使用 _ code>和
render
现有 CheckboxSelectMultiple
小部件的功能。
Unfortunately you have to create a new widget, but you can use the __init__
and render
functions of the existing CheckboxSelectMultiple
widget.
将一个新的 ul_attrs
参数添加到构图器。
Add a new ul_attrs
parameter to the contructor.
from django import forms
from django.forms.util import flatatt
from django.utils.safestring import mark_safe
class MyCheckboxSelectMultiple(forms.CheckboxSelectMultiple):
def __init__(self, attrs=None, ul_attrs=None):
self.ul_attrs = ul_attrs
super(MyCheckboxSelectMultiple, self).__init__(attrs)
def render(self, name, value, attrs=None, choices=()):
html = super(MyCheckboxSelectMultiple, self).render(name, value, attrs, choices)
final_attrs = self.build_attrs(self.ul_attrs)
return mark_safe(html.replace('<ul>','<ul%s>' % flatatt(final_attrs)))
在您的表单中只需使用此自定义窗口小部件:
In your form simply use this custom widget:
class Form(forms.Form):
ability = forms.ChoiceField(widget= MyCheckboxSelectMultiple(ul_attrs={"class":"fancybox"}), choices = SKILLS, required=False)
#
这篇关于django:如何将css传递给form.as_ul的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文