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

前端之家收集整理的这篇文章主要介绍了Django ModelForm/Form修改默认的widgets控件属性css样式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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>


猜你在找的Django相关文章