我正在设计一个联系表单,我想在某些情况下(并非总是)预先用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>
我该怎么办? 谢谢!
答案 0 :(得分:3)
您不需要使用HTML进行操作。使用表单构造函数的initial
参数:
subject = request.GET.get('subject', '')
content = request.GET.get('content', '')
contact_form = ContactForm(initial={'subject': subject, 'content': content})