django:如何将css传递给form.as_ul [英] django: how to pass css to form.as_ul

查看:326
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆