【问题标题】:using widgets to change the CSS of label in Django forms使用小部件更改 Django 表单中标签的 CSS
【发布时间】:2021-04-20 02:58:15
【问题描述】:

我正在尝试将 CSS 样式应用于 Django(版本 3.1.3)中的管理员登录表单。我可以通过forms.TextInput(attrs={'class':'textinputclass'}) 方法使用小部件轻松自定义输入,但是似乎没有办法将 CSS 类添加到标签?我可以将标签设置为“false”,使其根本不显示,但理想情况下我希望能够将 CSS 类与其关联。

我下面的代码显示了用于用户名和密码的文本输入的小部件。我该如何为标签做类似的事情?

class MyAuthForm(AuthenticationForm):
    class Meta:
        model = Lesson
        fields = ['username', 'password']

    def __init__(self, *args, **kwargs):
        super(MyAuthForm, self).__init__(*args, **kwargs)
        self.fields['username'].widget = forms.TextInput(attrs={'class': 'input', 'placeholder': 'Username'})
        self.fields['username'].label = False
        self.fields['password'].widget = forms.PasswordInput(attrs={'class': 'input', 'placeholder': 'Password'})
        self.fields['password'].label = False

【问题讨论】:

    标签: css django django-forms django-widget


    【解决方案1】:

    如果您不介意单独渲染标签,这很简单。我自己还没有找到更简单的方法。

    在模板中:

    {% for field in form %}
            <label class="label-class">{{ field.label }}</label>
            {{ field }}
        {% endfor %}
    

    模板中字段的label 默认会呈现字段的name。如果要设置特定标签,则必须将其传递给字段而不是小部件:

    username = forms.CharField(max_length=254, label='Username', widget=forms.TextInput(
            attrs={
            'class': 'input',
            'placeholder': 'username',
            }
        ))
    

    延伸阅读:How to set css class of a label in a django form declaration?

    【讨论】:

    • 谢谢,这有点用,但我不明白如何在使用 {% csrf_token %} {{ form.as_p }} 时将其与表单提交集成
    • @Ramirez100 您能否详细说明提交表单时遇到的问题?您也可以发布一些代码!
    • 我现在开始工作了。我的问题是您提供的代码列出了表格以及格式化的标签。我只是想为标签提供一个类,因为稍后会创建表单。我将您的代码更改为 {% for field in form %} {% endfor %} 这对于应用 css 类非常有效。作为后续问题,您是否知道如何定位特定标签以使某些标签获得不同的 css 类?
    • 从上面的cmets可以看出。我正在努力突出显示 cmets 中的代码
    • @Ramirez100 不用担心!当你想要一个代码块时,只需按回车键,然后将你的代码三在两边的刻度线 (```) 中包装起来。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    • 2021-05-03
    • 1970-01-01
    • 2018-03-25
    相关资源
    最近更新 更多