关于django:在python变量中循环表单POST存储数据

Loop through form POST store data in python variable

我有一个包含多个输入的窗体…在request.POST中,我循环遍历所有输入值。但是我想把它们存储在一个变量中。我该怎么做?

1
2
for key, value in request.POST.items():
   print(key, value)  # how can I store instead of print?

如何在python数组/dict/中存储所有值?


有两种方法可以将post数据存储在局部变量中。问题是:当你有权访问request.POST时,你为什么要这样做?

1
2
3
4
5
6
7
8
9
10
11
# Note: all keys and values in these structures are strings

# easiest, but immutable QueryDict
d = request.POST

# dict
d = dict(request.POST.items())

# array
a = list(request.POST.items())  # list of key-value tuples
a = request.POST.values()  # list of values only

这些变量将只适用于当前请求响应周期。如果您想要持久化任何超出这个范围的数据,您必须将它们存储到数据库中。此外,我建议使用django表单来处理post数据。这将为您处理验证、类型转换等。


这可能不能直接回答您的问题,但我不建议直接访问request.POST,因为您已经有了表单。表单很好,它通过将大量原始数据封装在表单对象中来提取它们,因此我建议检查表单本身以获取数据:

1
2
3
4
form = YourForm(request.POST or None)
if form.is_valid():
    field1_value = form.cleaned_data['field1']
    field2_value = form.cleaned_data['field2']

Django Doc有一些关于如何像我一样访问表单字段的示例。

此外,如果您想获得与request.POST相同的可变dict对象的副本,可以执行以下操作:

1
post_copy = request.POST.copy()