2011-07-14 38 views
0

在我的django應用程序中,我需要創建一個下拉列表以顯示月份的天數。該視圖預計爲一天的2位數字值(即01而不是1爲第一天) 。我必須將日期列表傳遞給模板,以便可以創建select元素的選項。在django中創建下拉列表的月份列表

我嘗試了下面給出的,並且下拉列表被正確創建。選擇了一天,以unicode的形式返回(比如選擇第26天的u'26')以用於與datetime.datetime進行比較。今天()。一天。一切正常..仍然,我很擔心,如果這是創建天數列表的正確方法..我的意思是,擴展一個unicode字符串列表與另一個ints列表看起來不正確..但是,我想不出一個更好的解決方案。

請幫我提出建議。

謝謝

mark。

在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

不能使用jquery日曆嗎?極限編程教授使用最簡單的解決方案,這將幫助您快速入門和完成。 – sprezzatura

回答

2

如果你想創建帶前導零的字符串,你應該使用字符串格式。 例如,您可以查看this答案。

對於你的例子,你可以使用這樣的東西。

days = [u'%02d' % x for x in range(1,32)] 

它創建帶前導零的列表。

雖然我懷疑這個問題本身。你確定你應該能夠選擇全部31天的月份,哪裏少? - 您可以簡單地將日期時間對象發送到模板並輸出指定月份的日期。

但如果你堅持:

的另一個選項是在範圍內的簡單列表發送(1,32),然後格式化模板:

 
{% for day in days %} 
    {{ day|stringformat:"02d" }} 
{% endfor %} 

另一種可能是使查看接受單個數字輸入。

+0

謝謝大量的建議 – markjason72

0

路線插值。

days = [u'%02d' % x for x in range(1, 32)]