【问题标题】:How to correctly pre-populate textarea in django?如何在 django 中正确预填充 textarea?
【发布时间】:2015-12-10 03:22:51
【问题描述】:

我有一个相当烦人的问题:

在我的模板中

<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>

它呈现预先填充的文本区域,但带有值,但在框的末尾打印一个冗余的"&gt;

原始 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 类中没有用于它的特殊小部件。

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

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    textarea html 标签没有 value 属性。正确的语法是:

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

    【讨论】:

      【解决方案2】:

      这在最新版本中不再有效。 {{form.aboutme}}

      【讨论】:

        【解决方案3】:

        Read more 关于小部件。

        在这种情况下,您可以选择跟随。尝试从字段中获取值:

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

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

        {{ form.aboutme }}
        

        正如我所见,你已经完成了,Django 使用 &lt;p&gt; 标记和填充值成功渲染了 &lt;textarea&gt;。您可以尝试为小部件添加更多自定义。

        【讨论】:

        • 好吧,使用value="{{form.aboutme.value }} 会删除多余的"&gt;,但会导致表单无法保存。添加aboutme = forms.CharField( widget=forms.Textarea ) 不会消除额外的"&gt; 问题。
        • @Paulrx ,如果您使用此处的另一个答案或我的链接中所示的表单小部件,那么您应该用{{ form.aboutme }} 替换您的html textarea。如果您要坚持使用 html,那么您应该在 html 中添加 name="aboutme",这样您就可以保存我的想法。另外,如果您发现问题,下次再发表评论,因为我没有收到有关编辑的通知。
        【解决方案4】:
        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>
        

        【讨论】:

          猜你喜欢
          • 2011-06-19
          • 2020-12-18
          • 1970-01-01
          • 2015-12-27
          • 1970-01-01
          • 2013-02-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多