我在django模板for循环中有一个错误

gjmwrych  于 2023-01-21  发布在  Go
关注(0)|答案(2)|浏览(162)

我在django模板循环中有一个错误。
我的代码:

<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>

我的错误:
"for"语句应使用格式"for x in y":对于y范围内的x(1980年,(www.example.com().年份+1))datetime.datetime.now().year + 1))

u5rb5r59

u5rb5r591#

不能在模板中使用标准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 %}

MORE ABOUT TEMPLATE TAGS

e4eetjau

e4eetjau2#

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>

相关问题