python - request.session 没有将完整的 querydict 传输到另一个 View

标签 python django session view request

我正在使用“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/

相关文章:

python - 更改 float 的精度并在 Python 中存储

python - 查找多个数组具有相同值的索引的快速算法

python - 覆盖 Django ImageField 验证

php - 从另一个浏览器注销一个浏览器 session - LARAVEL 5.2

session - session 亲和性和粘性 session 之间的区别?

python - 等效于 Python 中的 R 数组

python - 使用条件从 Python 列表中删除项目

python - 如何在 Django 中分离登录重定向 URL

python - 静态 CSS 文件未在 Django 框架中加载

php - Session_set_save_handler 未设置