昨天測驗表已經成功放到網頁上,今天則是要做分數的加總,需要修改昨天寫好的function play及新增function result。
views.py
1 2 3 4 5 6 7 8 9 10 11 12
| def play(request): question = Question.objects.all() if request.method == 'POST': #當測驗者提出表單(submit) total = [] #匯集測驗者每題的得分 for q in question: select = request.POST[str(q.id)] #獲得測驗者選擇的選項 choice = q.choice_set.all().values() for i in choice: #loop四個選項 if i['choice_text'] == select: total.append(i['score']) #選項對照的得分 return redirect(result, total=sum(total)) #傳送表單完就跳轉至結果畫面 return render(request, 'play.html', {'question':question})
|
- request.POST[str(n)]也可以寫成request.POST.get(str(n))。
- 為了讓傳送表單後轉到result.html,這邊使用redirect,裡面的第一個參數是view name,並傳送總分數total給view result。
測驗結果畫面的函數如下:
1 2 3
| def result(request, total): score = total return render(request, 'result.html', {'score':score})
|
template
在template資料夾下新增result.html,當作測驗結果網頁,並放上最後的總得分:
1 2 3 4 5 6 7 8 9
| <!DOCTYPE html> <html lang=\"en\"> <head> <meta charset=\"UTF-8\"> <title>Title</title> </head> <body>總分:{{ score }} </body> </html>
|
小結:明天再把結果畫面裝飾一下 ^^