django - django widget_tweaks 可以将输入渲染为 textarea 框吗?
问题描述
我想在 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>
标签。<textarea>
有没有办法在不将模型从 CharField 更改为 TextField 的情况下将其渲染出来?我想要一个更大的盒子,这样就有更多的空间来写文字。我知道我可以添加一个可以更改输入框大小的类,但是 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'})
}
请注意,虽然小部件可以添加类,但我认为在模板级别使用小部件调整而不是小部件添加 css 类或 id 更好。
- forms.py 中的另一种方式。当您想将小部件添加到一个或两个字段时,这种方式效果很好。
class MyModelForm(forms.ModelForm):
text = forms.CharField(widget=forms.Textarea(attrs={"rows":3, "cols":10})
class Meta:
model = MyModel
fields = ('text', 'field2',)
推荐阅读
- javascript - JavaScript TypeError:无法访问属性“offsetLeft”,这是未定义的
- c# - 在css下导入css违反了CSP的规则,不加载
- angular - 如何在 Angular 9 中按 *ngFor 中的 json 值循环该组?
- javascript - Fundamentals 4 Odin removeFromArray 语法问题?
- c# - 在 Zebra 浏览器打印机上打印标签
- javascript - 用图表js制作的图表不会改变大小?
- excel - 协助转换数据范围以保留初始列数据,但将列数据显示为针对原始行项目的行
- capl - 如何为 CAPL 和面板的 CANoe 中的 CAN 数据库创建新的环境变量?
- c++ - 重载运算符<<用于查找二维数组的总和
- javascript - 防止 HTML 元素进行 ID 操作