forms.widgets用法
时间: 2023-03-25 21:03:05 浏览: 66
forms.widgets 是 Django 框架中的一个模块,用于创建表单控件。它提供了一些常用的表单控件,如文本框、下拉框、单选框、复选框等,可以帮助开发者快速构建表单。在使用时,需要先导入 forms.widgets 模块,然后通过该模块中的类来创建表单控件。例如,可以使用 forms.widgets.TextInput 类创建一个文本框控件。
相关问题
forms.widgets中NumberInput的用法
NumberInput 是 Django 中 forms.widgets 中的一个小部件,用于在表单中显示数字输入框。它可以设置最小值、最大值、步长等属性,以便限制用户输入的数字范围。在使用时,需要在表单类中定义相应的字段,并将其与 NumberInput 部件关联起来。例如:
```python
from django import forms
class MyForm(forms.Form):
my_number = forms.IntegerField(widget=forms.NumberInput(attrs={
'min': ,
'max': 100,
'step': 1,
})))
```
这样就定义了一个名为 my_number 的整数字段,并将其与 NumberInput 部件关联起来,同时设置了最小值为 ,最大值为 100,步长为 1。在模板中,可以使用 {{ form.my_number }} 来渲染该字段对应的表单控件。
class MyUserCreationForm(UserCreationForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['password1'].widget = forms.PasswordInput( attrs={'class': 'txt tabInput', 'placeholder': '密码,4-16位数字/字母/符号(空格除外)'}) self.fields['password2'].widget = forms.PasswordInput(attrs={'class': 'txt tabInput', 'placeholder': '重复密码'}) class Meta(UserCreationForm.Meta): model = MyUser fields = UserCreationForm.Meta.fields + ('mobile',) widgets = { 'mobile': forms.widgets.TextInput(attrs={'class': 'txt tabInput', 'placeholder': '手机号'}), 'username': forms.widgets.TextInput(attrs={'class': 'txt tabInput', 'placeholder': '用户名'}), }
这是一个继承自Django内置的UserCreationForm表单类的自定义表单类,用于创建新用户。该自定义表单类重写了__init__方法和Meta类。
__init__方法中通过调用父类的构造方法,继承了父类的所有字段和方法,并对其中的password1和password2字段的widget属性进行了重置,将其替换成了一个密码输入框,并添加了一些HTML属性,如class和placeholder等。
Meta类中重写了model属性和fields属性,指定了自定义用户模型MyUser和表单的字段。在这里,新增了mobile字段,并将其添加到UserCreationForm.Meta.fields元组中。同时,使用widgets属性指定了mobile和username字段的HTML属性,如class和placeholder等。
这个自定义表单类可以在创建新用户时使用。通过继承父类的所有方法和字段,同时通过重写__init__方法和Meta类,实现了对表单的个性化定制和扩展。