在 Django 中将额外数据附加到 request.POST

append extra data to request.POST in django

我正在开发 Django 中的 pdf 显示功能, 用户以 HTML 形式输入数据,然后可以单击 Preview 按钮以查看 pdf 格式的预览

这些是我 views.py 中的行 return pdf 作为响应

pdf = render_to_pdf('new_pdf.html', params)
return HttpResponse(pdf, content_type='application/pdf')

这里 render_to_pdf() 使用 HTML 模板和普通 python 字典将数据嵌入 html 页面并将其转换为 pdf

我目前正在传递表单 POST 数据作为参数,即 params = {'data':request.POST}

request.POST 看起来像这样

<QueryDict: {'csrfmiddlewaretoken': ['some_random_string_here'], 'client_id': ['26'], 'note_no': ['5']}>

还有一些字段...

现在我可以简单地在 HTML 中使用 {{data.client_id}} 来获取数据

到目前为止一切正常

但我需要为我的参数提供一些额外的数据以在 pdf 上显示

我想知道是否有一种方法可以在 request.POST 中附加我的额外变量,例如

request.POST['credit_type'] = [credit_type]

但这不是一个普通的 python 字典,并且给出 This QueryDict instance is immutable

有什么解决办法吗??

或者我是否必须使用常规方法将键值对附加到我的 params 然后使用它们?

if request.method == 'POST':
    updated_request = request.POST.copy()
    updated_request.update({'credit_type': [credit_type]})

您可以尝试解压缩 request.POST 字典并添加您自己的键值对。这样你就可以保持原始字典的完整性。

new_dict = {**request.POST, 'custom_key': custom_val}