forms.py
from my_app.widgets import CustomTextArea
class MyForm(ModelForm):
message = forms.CharField(max_length=500,widget=CustomTextArea(attrs={'cols': 10,'rows': 3,'class':'form-control'}),required=True,help_text=_('The max length of the text is 500.'))
widgets.py
from django import forms
class CustomTextArea(forms.Textarea):
template_name = 'django/forms/widgets/textfield.html'
如果需要,请在
my_app
的templates文件夹内创建
textfield.html
,并确保路径正确。我使用的路径是
my_app/templates/django/forms/widgets/textfield.html
。在使用此代码时,您必须遵循此路径。
textfield.html
第一种方法:仅显示正确的小部件而不改变HTML。
{% include "django/forms/widgets/textarea.html" %}
{% if widget.value %}{{ widget.value }}{% endif %}
等同于:
<textarea name="{{ widget.name }}"{% include "django/forms/widgets/attrs.html" %}>
{% if widget.value %}{{ widget.value }}{% endif %}</textarea>
第二种方法:我们可以将
<textarea>...</textarea>
渲染在
div
内。
<div>
{% include "django/forms/widgets/textarea.html" %}
{% if widget.value %}{{ widget.value }}{% endif %}
</div>
等同于:
<div>
<textarea name="{{ widget.name }}"{% include "django/forms/widgets/attrs.html" %}>
{% if widget.value %}{{ widget.value }}{% endif %}</textarea>
</div>
textfield.html
文件不存在。 - JPGtextarea.html
中尝试了textfield.html
,这是一个笔误吗? - Ry-