我使用的是django 1.4,我收到了request.POST.dict()
的参数,其中包含了Unicode格式的所有值。比如说
{u'sam_status': u'true', u'address_type': u'false', u'is_deleted': u'false', u'title': u'true'}
字符串
但是这些值应该是布尔值,因为它们是从HTML页面的单选按钮呈现的。
我想把这个request.POST.dict()
转换成一个简单的pythondict,它将有pythonic值,比如'true'/'false' ==> True/False.
注意:我不想使用apply for循环,因为这可能会影响性能,因为它适用于庞大的数据。
4条答案
按热度按时间hkmswyz61#
阅读了评论后,你的做法(不使用Django表单,接受第三方web应用程序的POST请求,并选择将输入序列化为
u"true"
和u"false"
),你别无选择,只能在POST
字典键上循环,并在python中手动将字符串转换为布尔值。如果这真的对性能有那么大的影响,那么可能是时候重新考虑您的方法了。出于好奇,是谁设计了你正在接受和连载的表格?是你拍的连载还是他们拍的?你在安保方面做了什么?“通用的REST API模型表单提交”和“第三方Web应用程序”听起来像是灾难的处方。
编辑:请不要使用
eval()
将u"False"
转换为False
字符串
tcomlyy62#
django怎么知道这些问题是单选按钮输入的?Django也是一样的,因为其他表单输入的答案都是以文本格式发送的。
将这些值转换为正确的数据类型的正确方法是通过Django表单。你创建一个表格,你想要的答案,当它是“干净”艾德,它将在正确的格式。查看Django's own forms documentation。
你应该有这样的东西:
字符串
请注意,后台的django表单会做你所说的,它基本上会遍历数据并根据表单定义对它们进行规范化。但即使表单非常大,它也不会造成太大的性能问题。如果速度非常慢,我建议您检查其他代码是否存在性能瓶颈。
xtfmy6hx3#
字符串
w9apscun4#
你为什么不在发布数据的时候用JSON编码呢?就像这样:
字符串
然后,如果你在Django中解码响应体,一切都会很好:
型