gpt4 book ai didi

django - 如何将 CSS 类添加到 Django 内置表单

转载 作者:行者123 更新时间:2023-12-04 16:34:47 26 4
gpt4 key购买 nike

我正在使用 Django Built-in forms ,更准确地说是 PasswordChangeForm。

在我希望它看起来像网站的其余部分 (Bootstrap) 之前,它可以完美运行。我遵循了这个 answer 中的方法也就是继承类自己新建一个:

class PasswordChangeCustomForm(PasswordChangeForm):
old_password = CharField(required=True,
widget=PasswordInput(attrs={
'class': 'form-control'}))

new_password1 = CharField(required=True,
widget=PasswordInput(attrs={
'class': 'form-control'}))

new_password2 = CharField(required=True,
widget=PasswordInput(attrs={
'class': 'form-control'}))

但是重复所有这些代码让我很烦。有没有另一种方法可以在不重写每个字段的情况下实现同样的事情(将类 form-control 添加到每个字段)?

最佳答案

为了不重写字段,我发现我可以简单地更新小部件:

class PasswordChangeCustomForm(PasswordChangeForm):
def __init__(self, user, *args, **kwargs):
super(PasswordChangeCustomForm, self).__init__(user, *args, **kwargs)
self.fields['old_password'].widget.attrs.update({'class': 'form-control'})
self.fields['new_password1'].widget.attrs.update({'class': 'form-control'})
self.fields['new_password2'].widget.attrs.update({'class': 'form-control'})

对于 Bootstrap(所有字段都需要类 form-control)特别有用的是 answer来自@daniel-roseman:

class PasswordChangeCustomForm(PasswordChangeForm):
def __init__(self, user, *args, **kwargs):
super(PasswordChangeCustomForm, self).__init__(user,*args, **kwargs)
for field in self.fields:
self.fields[field].widget.attrs['class'] = 'form-control'

关于django - 如何将 CSS 类添加到 Django 内置表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40854951/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com