【问题标题】:Django Form Field Placeholder text using custom template tag使用自定义模板标签的 Django 表单字段占位符文本
【发布时间】: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) 自定义标签名称和值之间没有空格。如果有空格,它会抛出 TemplateSyntaxErrorplaceholder requires 2 arguments, 1 provided。 (?)

我的问题是:SO 上的所有其他示例在表单的 __init__ 类定义中(或视图/模型中的其他地方)使用 field.widget.attrs,而不是通过自定义标签 - 使用时是否存在设计问题一个自定义标签,它只是糟糕的形式还是很好?

【问题讨论】:

    标签: python html django python-3.x django-templates


    【解决方案1】:

    我现在已经使用了自定义模板标签并传入了预先格式化的上下文项。我得出的结论是,这个问题没有答案。

    如果我必须编写代码,则在特定上下文中编写它会更容易,除非它是重复的,然后作为单独的模块或模板标签 - 两者的工作量大致相同(对我而言)。

    可导入的自定义模板标签确实有优势,如果它们已经编写并且可以导入 - 例如{% load humanize %}

    【讨论】:

      猜你喜欢
      • 2013-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-23
      相关资源
      最近更新 更多