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)
- Django template object type
- Django – Mixing ListView and CreateView
- Django – OperationalError: (2006, 'MySQL server has gone away')
- Is it possible to disable django related_name for a specific field?
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 }}
Source:stackexchange.com