У меня есть ошибка в шаблоне django для цикла
I have an error in django template for loop.
My code:
<div class="form-group col-md-4 form-field">
<label>Year</label>
<select name="year" id="year" name="year">
{% for y in range(1980, (datetime.datetime.now().year + 1)) %}
<option value="{{ y }}">{{ y }}</option>
{% endfor %}
</select>
</div>
My error:
'for' statements should use the format 'for x in y': for x in y range(1980, (datetime.datetime.now().year + 1))
Please help me to resolve this issue.
Пожалуйста, помогите мне решить этот вопрос. Пожалуйста, помогите мне решить эту проблему.
Вы не можете использовать стандартную логику Python в шаблонах.
Прочитайте DOCS по этой теме.
Самый простой способ - создать пользовательский фильтр тегов шаблона:
import datetime
from django import template
register = template.Library()
@register.filter
def get_year_range(starting_year):
return range(int(starting_year), (datetime.datetime.now().year + 1))
И использовать его в шаблоне:
{% load custom_tags %}
...
{% for y in "1980"|get_year_range %}
<option value="{{ y }}">{{ y }}</option>
{% endfor %}
I solve my issue using following code:
import datetime
today = datetime.date.today()
year = today.year
year_dropdown = []
for y in range(year,1899,-1):
year_dropdown.append(y)
Pass key in render
return render(request, "add-ad.html",
{'year_dropdown': year_dropdown })
My html form django template code:
<div class="form-group col-md-4 form-field">
<label>Year</label>
<select name="year" id="year" name="year" class="form-control basic-select">
<option value="">Choose...</option>
{% for y in year_dropdown %}
<option value="{{ y }}">{{ y }}</option>
{% endfor %}
</select>
</div>