我想在 django 模板中创建一个年份下拉列表。下拉列表将包含作为 2011 年的开始年份,结束年份应该是从当前年份算起的 5 年。
例如:如果今天我看到 dropdwon,它将显示从 2011、2012、2013、...2017 年的年份。
这可以通过从views.py 发送一个列表并在模板中循环或在forms.py 中定义来完成。
但我不想在这里使用任何形式。我只需要在模板中显示它。
我怎样才能在 Django 模板中做到这一点。
我想在 django 模板中创建一个年份下拉列表。下拉列表将包含作为 2011 年的开始年份,结束年份应该是从当前年份算起的 5 年。
例如:如果今天我看到 dropdwon,它将显示从 2011、2012、2013、...2017 年的年份。
这可以通过从views.py 发送一个列表并在模板中循环或在forms.py 中定义来完成。
但我不想在这里使用任何形式。我只需要在模板中显示它。
我怎样才能在 Django 模板中做到这一点。
在你的models.py
...
import datetime
year_dropdown = []
for y in range(2011, (datetime.datetime.now().year + 5)):
year_dropdown.append((y, y))
因此,您的字段现在可以使用year_dropdown
:
year = models.IntegerField(_('year'), max_length=4, choices=year_dropdown, default=datetime.datetime.now().year)
它将当前年份设置为默认值。
如果您想要的只是模板中的值,请执行以下操作...
<select id="year">
{% for y in range(2011, (datetime.datetime.now().year + 5)) %}
<option value="{{ y }}">{{ y }}</option>
{% endfor %}
</select>
有关更多详细信息,请阅读Django 模板语言文档。
如果您想要的只是年份本身的下拉列表,您可以按照@Nick 或@Ian 的建议进行操作。如果您想要一些日历类型功能(日期选择器),您可以查看JQuery UI DatePicker
<select name="select_year">
<option>2011</option>
<option>2012</option>
<option>2013</option>
<option>2014</option>
<option>2015</option>
<option>2016</option>
<option>2017</option>
</select>
把它放在你的模板文件中......如果你想做一个动态的年份范围,你需要制作自己的模板标签
这个线程有几个实现范围类型功能作为模板标签的答案
使用 javascript 解决方案可能是动态设置范围的最简单方法。
这就是我喜欢这样做的方式。
模型.py:
YEAR_CHOICES = []
for r in range(2011, (datetime.datetime.now().year+5)):
YEAR_CHOICES.append((r,r))
year = models.IntegerField(('year'), max_length=4, choices=YEAR_CHOICES, default=datetime.datetime.now().year)
我建议在客户端使用 Javascript 或 jQuery 来根据当前年份填充下拉列表。