python - Django模板:访问模板中的自定义表单字段属性
问题描述
我只需要在我的 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 %}
推荐阅读
- php - 如何计算取决于条件的集合项数组?
- python - ZIP 用于加密的 CRC-32 并不完全是 zlib 的 crc32 ......为什么?
- hive - Hive count(1) 导致 oom
- amazon-web-services - 使用 AWS Chatbot 从松弛通道调用 AWS lambda 函数 - 自动化它,无需用户干预
- python - django 的“重定向”功能不起作用,提交表单后,用户仍然在同一页面上
- docker - 无法创建镜像/Dockerfile(Dockerfile)不能为空
- php - 如何显示该类别中的产品数量?在 laravel 中使用 Eloquent ORM
- reactjs - 如何在 Reactjs 中提交表单?(表格提交)
- omnet++ - 如何确定是否存在网络拥塞?或如何在 V2V 和 V2I 网络中造成拥塞?
- google-speech-to-text-api - Google Speech to Text API 填充词