2013-07-29 30 views
1

我試圖根據模板中的單選按鈕從Django生成報告,但無法從模板中獲取數據以確定應生成報告的哪個變體。根據用戶輸入從Django生成報告

模板片段:

<form action="{% url projects.views.projectreport reporttype %}"> 
    {% csrf_token %} 
    <p> 
    <input type="radio" name="reporttype" value="All">All<br> 
    <input type="radio" name="reporttype" value="Current">Current</p> 
    <input type = "submit" value="Print Project Report"> 
    </form> 

查看片段:

reporttype = 'all' 
    if 'current' in request.POST: 
     reporttype = 'current' 
    return render_to_response('index.html',{'project_list': project_list, 'reporttype': reporttype}, context_instance=RequestContext(request)) 

我可以返回從模板相同觀點的值,但是這都到了不同的看法(projects.views.projectreport )。我可能做一些很基本的錯誤...

J.

回答

2

它不會是「當前」,也就是在request.POST,這將是REPORTTYPE。 request.POST是一個類似字典的對象,因此檢入將檢查鍵而不是值。 reporttype的值可以是「當前」或「全部」。因此,只要改變你的代碼,以便

reporttype = request.POST['reporttype'] 

這將設置reporttype至是全部,或是電流(假設你在HTML中的默認設置 - 目前你不這樣做)。你也可以做什麼你做

reporttype = request.POST.get('reporttype', 'All').lower() 

,將其值設置爲無論是從單選按鈕傳入的值,或默認的「全部」嘗試。它也似乎你希望它低下,所以堅持lower()到底應該爲你處理。

+0

琢磨了一下,我想我已經解決了它。它似乎是一個GET,而不是一個POST,因爲它被重定向到另一個頁面。我仍然在瞭解差異。謝謝您的幫助。 – jford