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/中存储所有值?
- 您提到过您有一个表单,所以我认为在表单字段上循环要容易得多。你知道吗?
- @尚旺不喜欢尝试。如何循环访问表单字段并存储数据?
- 你为什么不这样做?或mydict = request.POST.copy()。
- 什么是.copy()?@特林切特
- stackoverflow.com/questions/12611345/…
- request.POST本身就是一个dict,request.POST.items()本身就是一个元组列表。这里不需要使用for循环。
有两种方法可以将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获取一些数据发送到API。
- 我来自一个javascript背景,有没有对象之类的东西?比如我可以把所有的值存储在一个对象中吗?
- .values()是否包括隐藏的输入?(如果可能,我想避免隐藏输入)
- python中的一切都是一个对象。dict最容易通过json.dumps(d)转换为json字符串。.values()包含隐藏输入!
- 如何避免隐藏输入?
这可能不能直接回答您的问题,但我不建议直接访问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() |
- 我之所以有表单是因为我从表单中获取数据并发送到API。这是我能想到的最好的方法。
- 这绝对是一个很好的方法,我只是建议使用表单来获取数据,而不是从request.POST访问原始数据,这可能会非常痛苦。
- 所以我来自JS背景,dict是一个对象吗?就像我发送了JSON字符串一样,它看起来像JS对象吗?
- 在python中,dict是一个对象,而python中的一切都是一个对象。如果您在python中有一个json字符串,那么您需要执行json.loads(json_string)来将json字符串转换为python dict(就像js中的hash一样).docs.python.org/2/library/json.html
- 如果你想发送一个python dict到模板中,让JS理解它,它是反过来的:json.dumps(dict),或者只使用django:docs.djangoproject.com/en/1.9/ref/request-response/&hellip中的快捷方式JSONResponse;
- 关于如何避免在dict中放置隐藏的输入有什么想法吗?
- 只需获取整个dict并手动除去隐藏的条目:stackoverflow.com/questions/5844672/…