如何在模板

时间:2016-08-18 05:49:17

标签: django django-forms

我有一个模型表格,我想迭代模板中的表单字段,但同时,当我遇到某些字段时,有条件地渲染额外的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 %}

3 个答案:

答案 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 %}