我有一个模型表格,我想迭代模板中的表单字段,但同时,当我遇到某些字段时,有条件地渲染额外的html。目前我从field.html_name
中提取字段名称,但我不确定这是否是最好的方式(它感觉有点hackish,就像我应该使用getattr()
过滤器或其他东西......)。 / p>
{% for field in form %}
<div class="form-group">
{{ field }}
{% if field.html_name == "location" %}
<!-- CUSTOM HTML HERE -->
{% endif %}
</div>
{% endfor %}
答案 0 :(得分:7)
如果我不误解你的意思,我也有同样的情况。我的解决方案是field.name
。代码示例:
{% if field.name == 'password' %}
<input type="password" name="password" class="form-control" placeholder="{% trans 'Enter your password' %}">
{% else %}
<input type="email" name="email" class="form-control" placeholder="{% trans 'Enter your email address' %}">
{% endif %}
答案 1 :(得分:1)
您是否考虑使用小部件或创建自己的自定义小部件? https://docs.djangoproject.com/en/1.10/ref/forms/widgets/
例如:仅添加css类或类似于现有输入use the attrs
argument
class LocationFieldWidget(Widget):
def render(self, name, value, attrs=None):
return mark_safe('custom html')
或创建完整的自定义窗口小部件(查看Input的实现方式)
{{ form }}
然后只需通过
在模板中呈现表单@Inject
答案 2 :(得分:1)
我不知道你的意思,但你可以试试这个
string InstanceID = Microsoft.XLANGs.Core.Service.RootService.InstanceId.ToString()
然而,您可以将forms.py中的标签设置为
{% for field in form %}
{{ field }}
{% if field.label == 'Location' %}
<h1>Hi</h1>
{% endif %}
{% endfor %}