[Fixed]-How to access django form field name in template

25👍

I have the same situation if I don’t misunderstand your mean. My solution is field.name. Code sample:

{% 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 %}

3👍

I don’t know how you mean, but you can try this

{% for field in form %}
   {{ field }}
   {% if field.label == 'Location' %}
      <h1>Hi</h1>
   {% endif %}
{% endfor %}

Whereas, you would have set label in forms.py as

location = forms.CharField(widget=forms.TextInput(
        attrs={'class': 'yourclass', 'placeholder': 'Enter your location',
               }), label=u'Location', max_length=100, required=True)

2👍

Have you considered using a widget or creating your own custom widget? https://docs.djangoproject.com/en/1.10/ref/forms/widgets/

E.g.: for adding just a css class or similiar to the existing input use the attrs argument

class MyForm(forms.Form):
     ...
     location = forms.CharField(
          ...,
          widget=Input(attrs={'class': 'location', 'style': 'background: red'}),
     )
     ...

Or creating a complete custom widget (take a look at how Input is implemented)

class LocationFieldWidget(Widget):
    def render(self, name, value, attrs=None):
        return mark_safe('custom html')

and then the form can be rendered in the template simply by

 {{ form }}
👤zsepi

Leave a comment