如何在 Django 模板中设置动态默认文本区域数据?
How to set dynamic default textarea data in a Django template?
我正在设计一个联系表单,我希望在某些情况下(并非总是)使用 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>default texte here</textarea>
我该怎么办?
谢谢!
您不需要使用 HTML 进行操作。使用表单构造函数的 initial
参数:
subject = request.GET.get('subject', '')
content = request.GET.get('content', '')
contact_form = ContactForm(initial={'subject': subject, 'content': content})
我正在设计一个联系表单,我希望在某些情况下(并非总是)使用 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>default texte here</textarea>
我该怎么办? 谢谢!
您不需要使用 HTML 进行操作。使用表单构造函数的 initial
参数:
subject = request.GET.get('subject', '')
content = request.GET.get('content', '')
contact_form = ContactForm(initial={'subject': subject, 'content': content})