在python变量中循环表单POST存储数据

时间:2016-05-26 14:49:02

标签: python django

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

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

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

2 个答案:

答案 0 :(得分:1)

您可以通过多种方式将POST数据存储在本地变量中。问题是:当你有权访问request.POST时,你为什么要这样做呢?

# 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 form来处理POST数据。这将为您处理验证,类型转换等。

答案 1 :(得分:0)

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

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

django doc就像我一样有关于how to access form fields的例子。

另外,如果你想获得与request.POST相同的可变dict对象的副本,你可以这样做:

post_copy = request.POST.copy()