如何在django中正确预填充textarea?

时间:2015-09-14 07:38:20

标签: django django-templates

我有这个相当讨厌的问题:

在模板中我有

<div class="form-group">
    {{ form.aboutme.errors }}
    <label for="aboutme">About Me:</label>
    <textarea class="form-control" rows="10" id="aboutme" value="{{form.aboutme}}"></textarea>
</div>

它渲染了textarea预填充但是带有值,但在框的末尾打印了一个冗余的">

原始html看起来像这样:

<textarea class="form-control" rows="10" id="aboutme" value="<p><textarea cols=" 40"="" name="aboutme">My Name is Django</textarea>

其中显然插入了未加入textarea标记。

该字段是:

 aboutme=models.TextField(blank=True, verbose_name=_('About Me'))

并且在各自的ModelForm类中没有使用specia小部件。

真的很困惑如何正确渲染这个字段?

4 个答案:

答案 0 :(得分:4)

textarea html标记没有值属性。正确的语法是:

<textarea class="form-control" rows="10" id="aboutme">{{ form.aboutme.value }}</textarea>

答案 1 :(得分:1)

Read more关于小部件。

在这种情况下,您可以使用以下内容。尝试从字段中获取值:

<textarea class="form-control" rows="10" id="aboutme" value="{{form.aboutme.value}}"></textarea>

如果它不起作用,请使用上面链接中的文章或following SO question将小部件添加到表单的CharField,然后只使用:

{{ form.aboutme }}

当我看到你已经完成它并且Django成功地用<textarea>标签和填充值来渲染<p>。您可以尝试向窗口小部件添加更多cutomization。

答案 2 :(得分:0)

aboutme = forms.CharField(required=False, widget=forms.Textarea(attrs={'rows': 10, 'cols': 40}))

<div class="form-group">
       <label for="aboutme">About Me:</label>
       {{ form.aboutme.errors }}
</div>

答案 3 :(得分:0)

这在最新版本中不再起作用。 {{form.aboutme}}