在我的django应用程序中,我需要创建一个月份的下拉列表。视图需要一天的2位数值(即01,而不是第一天的1)。我必须将一天的列表传递给模板,可以创建选择元素的选项。
我按照下面的说明尝试了这个,并且正确创建了下拉列表。选择的日期,作为unicode返回(比如说'26'选择第26天)用于与datetime.datetime.today进行比较().day。一切正常..但是,我担心这是否是创建日期列表的正确方法..我的意思是,用另一个int列表扩展unicode字符串列表看起来不正确..但是,我想不出更好的解决方案。
请帮我提出建议。
感谢
标记。
在views.py中
...
days=[u'01',u'02',u'03',u'04',u'05',u'06',u'07',u'08',u'09']
days.extend([x for x in range(10,32)])
...
并在模板中
...
<form action=".">
...
<select name="day" id="dayselect">
{% for aday in days %}
<option value={{aday}} > {{aday}}</option>
{% endfor %}
</select>
<input type="submit" value="entries of the day" />
</form>
...
urls.py有
url(r'^entries/(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/$','myapp.views.entries_for_day',
{
'template_name':'myapp/entries_for_day.html',
'page_title':'Entries of the day'
},name='entries_for_day'),
答案 0 :(得分:2)
如果要创建带引号为零的字符串,则应使用字符串格式。 例如,您可以查看this答案。
对于你的例子,你可以使用这样的东西。
days = [u'%02d' % x for x in range(1,32)]
使用前导零创建列表。
虽然我对问题本身表示怀疑。你确定你应该能够选择少数几个月的31天吗? - 您只需将datetime对象发送到模板并输出该给定月份的天数。
但如果你坚持:
另一个选项可能是发送一个简单的范围列表(1,32),然后在模板中格式化它:
{% for day in days %} {{ day|stringformat:"02d" }} {% endfor %}
另一个可能是让视图接受单个数字输入。
答案 1 :(得分:0)
字符串插值。
days = [u'%02d' % x for x in range(1, 32)]