加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Django ModelForm/Form修改默认的widgets控件属性css样式

发布时间:2020-12-15 17:15:35 所属栏目:大数据 来源:网络整理
导读:Django 中利用ModelForm 可以快速地利用数据库对应的Model 子类来自动创建对应表单. ????????from?django.db?import?modelsfrom?django.forms?import?ModelFormclass?Book(models.Model):????name?=?models.CharField(max_length=100)????description?=?mode

Django 中利用ModelForm 可以快速地利用数据库对应的Model 子类来自动创建对应表单.

????????
from?django.db?import?models
from?django.forms?import?ModelForm


class?Book(models.Model):
????name?=?models.CharField(max_length=100)
????description?=?models.CharField(max_length=100)
????url=?models.CharField(max_length=100)
????authors?=?models.ManyToManyField(Author)

修改Form的widgtes属性方法

from?django?import?forms

class?BookForm(forms.Form):
????name?=?forms.CharField()
????url?=?forms.URLField()
????description?=?forms.CharField()

第一种:直接修改

class?BookForm(forms.Form):
????name?=?forms.CharField(widget=forms.TextInput(attrs={'class':?'special'}))
????url?=?forms.URLField()
????comment?=?forms.CharField(widget=forms.TextInput(attrs={'size':?'40'}))

第二种:在表单定义中修改widget属性

class?CommentForm(forms.Form):
????name?=?forms.CharField()
????url?=?forms.URLField()
????comment?=?forms.CharField()

????name.widget.attrs.update({'class':?'special'})
????comment.widget.attrs.update(size='40')

修改ModelForm的widgets属性两种方法:

第一种方法:

class?BookForm(forms.ModelForm):
????class?Meta:
????????model?=?Book
????????fields?=?['name',?'description']
????????widgets?=?{
????????????'name':?Textarea(attrs={'cols':?80,?'rows':?20}),????????????'description':?Textarea(attrs={'cols':?80,????????}

第二种重写__init__方法:

class?BookForm(forms.ModelForm):
????class?Meta:
????????model?=?Book
????def?__init__(self,?*args,?**kwargs):
????????super().__init__(*args,?**kwargs)
????????self.fields['name'].widget.attrs.update({'class':?'special'})
????????self.fields['description'].widget.attrs.update(size='40')

Django将在渲染输出中包含额外属性:

>>>?f?=?CommentForm(auto_id=False)
>>>?f.as_table()
<tr><th>Name:</th><td><input?type="text"?name="name"?class="special"?required></td></tr>
<tr><th>Url:</th><td><input?type="url"?name="url"?required></td></tr>
<tr><th>Description:</th><td><input?type="text"?name="comment"?size="40"?required></td></tr>


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读