如何在Django模板中设置动态默认textarea数据?

时间:2015-01-02 14:26:30

标签: python django django-templates

我正在设计一个联系表单,我想在某些情况下(并非总是)预先用URL中的数据填充主题和内容字段。

这就是为什么我的观点看起来像这样:

def contact(request):
    if request.method == 'POST':
        contact_form = ContactForm(request.POST)
        # Some more logic here

    else: # GET request
        contact_form = ContactForm()
        subject = request.GET.get('subject') or ""
        content = request.GET.get('content') or ""

    return render(request, 'contact.html', locals())

我创建了一个addattrs自定义过滤器,允许我在HTML元素中注入HTML属性。

所以,为了预先填充主题(经典文本输入),我这样做,并且它有效:

{% with "value="|add:subject as attrs %}
    {{ contact_form.subject|addattrs:attrs }}
{% endwith %}

现在,我想用textarea做同样的事情。 但是填充HTML value属性不会设置textarea默认值,它们会以这种方式填充:

<textarea>default texte here</textarea>

我该怎么办? 谢谢!

1 个答案:

答案 0 :(得分:3)

您不需要使用HTML进行操作。使用表单构造函数的initial参数:

subject = request.GET.get('subject', '')
content = request.GET.get('content', '')
contact_form = ContactForm(initial={'subject': subject, 'content': content})