在Django中从一个视图到另一个视图的通过列表
问题描述:
我想通过jlist
(我每次生成'javaindex'方法时都会生成)到另一个视图,即javaresult
视图。我从Question
模型生成jlist
。在Django中从一个视图到另一个视图的通过列表
def javaindex(request):
javapool = list(Question.objects.all())
random.shuffle(javapool)
jlist = javapool[:10]
request.session['jlist'] = jlist
return render(request,'index.html',{'latest_question_list': jlist})
我的另一种观点则
def javaresult(request):
ch = [0]
correct = 0
jlist = request.session['jlist']
for i in range(1,11):
s = request.POST.get(str(i))
if s:
question, choice = s.split('-')
ch.append(choice)
if jlist[i].ans == ch[i]:
correct+=1
return HttpResponse(correct)
我搜索了SO,因此增加了request.session['jlist']
但这是给我一个错误<Question: Question object> is not JSON serializable
。
我该如何摆脱?谢谢:)
答
在会话中保存Question对象的ID,并在第二个视图中再次从DB获取对象。
def javaindex(request):
...
request.session['jlist'] = [j.id for j in jlist]
...
def javaresult(request):
...
jlist = Question.objects.filter(id__in=request.session['jlist'])
...
请给这个代码? – deveshasha
@deveshasha代码示例添加。 –
谢谢你:)现在就工作了。只有一个小问题,结果视图中的'jlist [i]'超出了界限。为什么这样? – deveshasha