django widget_tweaks 可以将输入渲染为文本框吗?
Can django widget_tweaks render out input as textarea box?
我想在 Django 中使用 widget_tweaks 将输入框呈现为文本区域。
这是我的代码:
<div class="form-row">
<div class="form-group col-md-6">
<label>More information *</label>
{% render_field form.info class="form-control" %}
</div>
</div>
一切正常,但呈现为 <input>
标记。有什么方法可以在不将模型从 CharField 更改为 TextField 的情况下将其呈现为 <textarea>
吗?我想要一个更大的盒子,这样就有更多 space 来写文字。我知道我可以添加一个 class 来改变输入框的大小,但是 textarea 标签会更容易。
您可以通过在 forms.py 中指定小部件将 CharField 呈现为文本区域。
text = forms.CharField(widget=forms.Textarea)
或者设置textarea的默认宽度和高度
text = forms.CharField(widget=forms.Textarea(attrs={"rows":3, "cols":10}))
有两种方法可以将其合并到您的 forms.py。
- 首选方式,尤其是当您想将小部件添加到多个字段时。
class MyModelForm(forms.ModelForm):
class Meta:
model = MyModel
fields= ('text', 'field2')
widgets = {
'text': forms.Textarea(attrs={"rows":3, "cols":10})),
'field2': forms.RadioSelect(attrs= {
'class': 'choice_class'})
}
请注意,虽然 widget 可以添加 class,但我认为最好在模板级别使用 widget-tweaks 添加 css class 或 id 而不是 widget。
- forms.py 中的另一种方式。当您想将小部件添加到一个或两个字段时,这种方式很有效。
class MyModelForm(forms.ModelForm):
text = forms.CharField(widget=forms.Textarea(attrs={"rows":3, "cols":10})
class Meta:
model = MyModel
fields = ('text', 'field2',)
我想在 Django 中使用 widget_tweaks 将输入框呈现为文本区域。
这是我的代码:
<div class="form-row">
<div class="form-group col-md-6">
<label>More information *</label>
{% render_field form.info class="form-control" %}
</div>
</div>
一切正常,但呈现为 <input>
标记。有什么方法可以在不将模型从 CharField 更改为 TextField 的情况下将其呈现为 <textarea>
吗?我想要一个更大的盒子,这样就有更多 space 来写文字。我知道我可以添加一个 class 来改变输入框的大小,但是 textarea 标签会更容易。
您可以通过在 forms.py 中指定小部件将 CharField 呈现为文本区域。
text = forms.CharField(widget=forms.Textarea)
或者设置textarea的默认宽度和高度
text = forms.CharField(widget=forms.Textarea(attrs={"rows":3, "cols":10}))
有两种方法可以将其合并到您的 forms.py。
- 首选方式,尤其是当您想将小部件添加到多个字段时。
class MyModelForm(forms.ModelForm):
class Meta:
model = MyModel
fields= ('text', 'field2')
widgets = {
'text': forms.Textarea(attrs={"rows":3, "cols":10})),
'field2': forms.RadioSelect(attrs= {
'class': 'choice_class'})
}
请注意,虽然 widget 可以添加 class,但我认为最好在模板级别使用 widget-tweaks 添加 css class 或 id 而不是 widget。
- forms.py 中的另一种方式。当您想将小部件添加到一个或两个字段时,这种方式很有效。
class MyModelForm(forms.ModelForm):
text = forms.CharField(widget=forms.Textarea(attrs={"rows":3, "cols":10})
class Meta:
model = MyModel
fields = ('text', 'field2',)