【发布时间】:2018-11-11 04:42:59
【问题描述】:
我到处寻找一种将placeholder 文本元素添加到 Django 表单输入字段的简单方法。有几个examples 希望修改模型表单或使用add-ins。我拼凑了几个不同的例子来提出以下......
这是我的第一个自定义模板标签,在我添加大量模板更改之前,我想验证这是否正确:
templatetags/placeholder.py
from django.template import Library
import re
register = Library()
def placeholder(value, token):
value.field.widget.attrs["placeholder"] = token
return value
register.filter(placeholder)
templates/my_app/customer_form.html(实现 Bootstrap)
<div class="container">
<h5>Add a New Customer</h5>
<form method="post">{% csrf_token %}
<table class="table table-borderless table-sm table-half">
<tr><td>{{ form.customer | placeholder:'Customer Name' }}</td></tr>
<tr><td>{{ form.address1 | placeholder:'Address' }}</td></tr>
<tr><td>{{ form.address2 | placeholder:'Address' }}</td></tr>
<tr><td>{{ form.city | placeholder:'City' }}</td></tr>
<tr><td>{{ form.state | placeholder:'State' }}</td></tr>
<tr><td>{{ form.zip | placeholder:'Zip' }}</td></tr>
</table>
<input type="submit" class="btn btn-outline-primary" value="Add" />
</form>
</div>
火狐
我注意到了几点:
a) 看起来我可以 (i) 在自定义标签中使用字段标签,并且 (ii) 我可以使用纯文本。
b) 自定义标签名称和值之间没有空格。如果有空格,它会抛出 TemplateSyntaxError 和 placeholder requires 2 arguments, 1 provided。 (?)
我的问题是:SO 上的所有其他示例在表单的 __init__ 类定义中(或视图/模型中的其他地方)使用 field.widget.attrs,而不是通过自定义标签 - 使用时是否存在设计问题一个自定义标签,它只是糟糕的形式还是很好?
【问题讨论】:
标签: python html django python-3.x django-templates