在Django中将列表从一个视图传递到另一个视图

时间:2016-03-21 15:29:35

标签: python django

我想将jlist(我每次调用'javaindex'方法时生成)传递给另一个视图,即javaresult视图。我正在从jlist模型中生成Question

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

我如何摆脱这个?谢谢:))

1 个答案:

答案 0 :(得分:1)

在会话中保存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'])
    ...