我正在使用“post”提交表单,并使用 request.POST 将其数据传输到另一个 View ,但我的 querydict 在到达第二个 View 时不完整。
View 1
def question_filter(request):
if request.method == 'POST':
print('before validation', request.POST)
request.session['question_data'] = request.POST
return HttpResponseRedirect(reverse('qapp:question_preview'))
View 2
def question_preview(request):
all_questions = Questions.objects.all()
question_data = request.session.get('question_data')
print(question_data)
question_pk_list = question_data['question_pk']
preview_questions = all_questions.filter(id__in=question_pk_list)
...
return render(request,'apps/qapp/question_preview.html', {somecontext})
我在这里做错了什么吗?
更新:
before validation <QueryDict: {'topics_all': ['1', '2'], 'csrfmiddlewaretoken': ['...'], 'subtopics_all': ['4', '2'], 'classroom': ['3'], 'difficulty': ['l', 'm']}>
[28/Feb/2018 17:17:39] "POST /question/filter/ HTTP/1.1" 302 0
(in the second view)question data {'topics_all': '2', 'csrfmiddlewaretoken': '...', 'difficulty': 'm', 'subtopics_all': '2', 'classroom': '3'}
最佳答案
您无法像这样发送所有发布数据
,因为您的输入名称中有列表,
您必须以不同的方式访问每个名称并将它们设置在 session
。
request.session['question_data'] = request.POST.getlist('topics_all')
其他输入名称
也是如此,然后在第二个 View 中使用 key 访问
关于python - request.session 没有将完整的 querydict 传输到另一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49029196/