在我的網絡應用程序中,我有一個搜索功能,實際上是根據選定的月份和年份搜索數據。我使用簡單的日期和年份選擇下拉菜單。但不能在我的搜索結果模板中渲染所選月份的名稱。也就是說,如果我選擇1月份,那麼其實際上返回值1,而不是返回名稱月。現在這是我的下拉菜單選擇月份和年份來搜索項目。django我怎樣才能從一個下拉列表中返回模板中的月份名稱
<form role="form" method='post' action='{% url 'user_commission_results'%}'>
<tr>
{% csrf_token %}
<td><select name="month" value="">
<option value="1">January</option>
<option value="2">February</option>
<option value="3">March</option>
<option value="4">April</option>
<option value="5">May</option>
<option value="6">June</option>
<option value="7">July</option>
<option value="8">August</option>
<option value="9">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12">December</option>
</select></td>
<td><select name="year">
<option value="2010">2010</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
<option value="2013">2013</option>
<option value="2014">2014</option>
<option value="2015">2015</option>
<option value="2016">2016</option>
<option value="2017">2017</option>
<option value="2018">2018</option>
<option value="2019">2019</option>
<option value="2020">2020</option>
<option value="2021">2021</option>
</select></td>
<td>
<input type='submit' value='search' />
</td>
</tr>
</form>
,這是views.py在那裏我有在所選擇的(request.POST)月和年中即月和年並返回作爲上下文變量,以顯示在這裏你可以看到,我已經將所選月份和年份存儲在變量中,並作爲上下文傳遞。
現在我得到的模板,如果我使用{{month}}
選定每個月都顯示,它實際上顯示當月不是一個月的名值。
舉例來說,如果我選擇March作爲一個月,那麼它會返回值3而不是月份的名稱。我可以理解,它實際上是返回值,導致在我的下拉菜單中,我已經設置對於March.Now月份我的問題是,我怎麼能顯示出一個月,而不是一個月的值的名稱值3?因爲我不能設置值類似的東西
<option value="January">January</option>
<option value="February">February</option>
<option value="March">March</option>
................................
................................
,因爲我在我的views.py中設置了一個搜索查詢,其中查詢查找月份的值以搜索項目,所以我必須設置值1,2或3 ....月份1月,2月和3月。 .....
更新:
根據Blackeagle52的回答,我重寫了我的views.py。
views.py
def user_commission_results(request):
month = request.POST.get('month')
year = request.POST.get('year')
dt = datetime.datetime(year,month,1)
verbose_month = dt.strftime('%B')
context = RequestContext(request)
commission_results = UserCommission.objects.filter(created_time__year=year,created_time__month=month,user=request.user).order_by('-download')
total_commission = sum([i.commission for i in commission_results])
return render_to_response('photo/user_commission_results.html',{'commission_results':commission_results,'total_commission':total_commission,'month':verbose_month,'year':year},context)
,但現在我面對錯誤,
TypeError at /showphoto/user_commission_results/
an integer is required
在行
dt = datetime.datetime(year,month,1)
謝謝您的回答,我已經按照你的答案設置我的views.py代碼,但現在我facting即在線DT「的整數所要求的」錯誤= datetime.datetime(一年,month,1)@ Blackeagle52 – RTan
啊,該死的,我忘了你得到一條g來自你的POST。所以你仍然必須把它變成一個整數。我會編輯我的答案。 – Blackeagle52
是的,我的猜測是正確的,事實上,月份和年份都以字符串形式傳遞。 – RTan