0

我正在查看一个名为crispy forms的包我想知道是否可以从模板中更改html名称?

IE

{{ form.username|changename }}

规则:

我不想更改原始表单或视图(根本),我只能访问模板。

4

2 回答 2

1

这可能是过度简化了它,但什么不仅仅是原始输出呢?

<label for="">what ever you want</label>
<input type="text" name="{{ form.username.html_name }}" id="{{ form.username.auto_id }}">

我仍然会自己在 form.py 中执行此操作,但如果您拥有的只是要使用的模板,那么这里不需要任何花哨的东西。

于 2013-08-16T15:20:39.647 回答
1

由于您要更改标签,我建议您使用模板,而不使用模板标签或过滤器:

<label for="id_username">Your label name here:</label>
{{ form.username }}

或者,如果您无法抗拒,则必须对您的field.label属性应用过滤器:

{{ form.username.label|my_custom_filter }}

一个简单的过滤器可以是:

@register.filter(name='my_custom_filter')
def my_custom_filter(value):
    # here value is the value of your label
    # process it as you please then return the new value
    if value == 'changeme':
        return 'changed label'
    return value

这只是向您展示模板过滤器如何工作的示例,然后您必须对其进行详细说明并更改名称、逻辑等

于 2013-08-16T15:21:04.047 回答