我到处寻找一种将placeholder
文本元素添加到Django Form输入字段的简单方法。有几个example用于修改模型表单或使用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上的所有其他示例在表单的field.widget.attrs
类(或视图/模型中的其他位置)中使用__init__
而不是通过自定义标记 - 是否存在使用自定义标签的设计问题,它只是不好的形式或其他方面很好吗?
答案 0 :(得分:0)
我现在使用了自定义模板标记并传入预格式化的上下文项。我得出的结论是,这个问题没有答案。
如果我必须编写代码,那么在特定的上下文中编写代码会更容易,除非它重复,然后作为一个单独的模块或模板标记 - 要么(对我而言)也有相同的努力。 / p>
可导入的自定义模板标记如果已经编写并且可以导入(例如{% load humanize %}),则具有优势。