您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

将类添加到Django label_tag()输出

将类添加到Django label_tag()输出

一个自定义模板标签似乎是解决方案。自定义过滤器也可以,尽管它可能不太优雅。但是,在两种情况下,您都需要使用自定义表单呈现。

如果这是一项高度重要的任务;我将创建一个Mixin,它允许我用标签类注释表单字段,并使用这些类提供表单呈现方法。这样以下代码即可工作:

{{ form.as_table_with_label_classes }}

但是我想问一下;您是否真的需要在标签标签上上课?我的意思是HTML设计。绝对有必要在其中添加一个类吗?不能用一些CSS来解决它:

encapsulating_selector label {
    some-attr: some-value;
}

技术1

我对另一个答案的断言表示怀疑,即过滤器将“不够优雅”。如你所见,它确实非常优雅。

@register.filter(is_safe=True)
def label_with_classes(value, arg):

    return value.label_tag(attrs={'class': arg})

在模板中使用它同样优雅:

{{ form.my_field|label_with_classes:"class1 class2"}}

技术2

另外,我发现的一种更有趣的技术是:在必填字段中添加*。

你为BoundField.label_tag创建一个装饰器,该装饰器将使用适当设置的attrs进行调用。然后,猴子修补BoundField,以便调用BoundField.label_tag调用修饰的函数

from django.forms.forms import BoundField

def add_control_label(f):
    def control_label_tag(self, contents=None, attrs=None):
        if attrs is None: attrs = {}
        attrs['class'] = 'control-label'
        return f(self, contents, attrs) 
    return control_label_tag

BoundField.label_tag = add_control_label(BoundField.label_tag)   
Go 2022/1/1 18:23:20 有444人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶