繁体   English   中英

Django 模板:访问模板中的自定义表单字段属性

[英]Django template: Access custom form field attributes in template

我的 Django 表单字段中只需要一个自定义的额外属性,即icon 我将以我的自定义CharField为例。

custom_fields.py:

class ICharField(forms.CharField):
    """
    Django CharField with custom icon attr to use along with Bulma.
    """

    icon = ''

    def __init__(self, *, icon='', max_length=None, min_length=None, strip=True, empty_value='', **kwargs):
        super().__init__(**kwargs)
        self.icon = icon

表格.py:

from utils.forms import custom_fields

class SignUpForm(forms.Form):

    company_name = custom_fields.ICharField(
        icon='fas fa-envelope',
        widget=forms.TextInput(attrs={
            'class': 'input',
            'placeholder': _('Name of your company'),
            'label': _('Company'),
        })
    )

就是这样,但是当我在 HTML 中尝试访问 {{ field.icon }} 时,我什么也没得到。

.html:

{% extends 'template_composition/main.html' %}

{% load i18n %}

{% block content %}


{% for field in form %}
<div class="field">
    <b>{{ field.label }}:</b>
    <p class="control has-icons-left">
        {{ field }}
        <span class="icon is-small is-left">
            <i class="{{ field.icon }}"></i>
        </span>
    </p>
</div>
{% endfor %}


{% endblock %}

很明显我覆盖__init__错了,对吧?

使用form.<field_name>.field.<field_attribute>语法

在你的情况下,

{{ form.company_name.field.icon }}

或通过使用循环,

{% for field in form %}
    {{ field.field.icon }}
{% endfor %}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM