【问题标题】:How can I extract this and make it a variable? Django如何提取它并使其成为变量?姜戈
【发布时间】:2017-05-05 10:21:42
【问题描述】:

我有这样的输出。

data = <QueryDict: {u'product_name': [u'L4'], u'price': [u''], u'product_description': [u''], u'id': [u"[u'1']"], u'product_status': [u'1']}>

老实说,我不知道输出是怎样的,但如果我想获取 id。

我使用了类似 (data['id'][0]) 的东西,但这并没有得到我的任何东西,如果我使用 (data['id']) 这就是我得到的 u'[u\\'1\\']

当我发布这种数据时,我收到这样的错误 invalid literal for int() with base 10: '['

【问题讨论】:

  • 您可能应该修复发送此数据的表单或 JS;没有理由将 id 值包含在列表中。
  • @ettanany 我读过它,但我真正需要的是把u 去掉,这样我就可以得到1 的值来搜索查询
  • @DanielRoseman 我明白你的意思,我是 django 的超级新手,而且目前实际上是在外面工作的人,所以尝试这样做,希望它快速简单,并且让现在开发它的人稍后再进行调整
  • 你在这个视图上使用 django-rest-framework 吗?

标签: python arrays django unicode


【解决方案1】:

您需要将其转换为普通字典,如下所示:

my_dict = dict(data.iterlists())

现在,你应该可以my_dict['id'][0]

您可以使用ast.literal_eval() 来解决您的问题,但正如@Daniel 所说,您可能需要修复数据源。

>>> import ast
>>> 
>>> id = ast.literal_eval("[u'1']")
>>>
>>> id
[u'1']
>>> id[0]
u'1'

【讨论】:

  • 我实际上是在尝试获取 id,然后使用它来获取查询,但是在使用您的代码后会给我这个错误 invalid literal for int() with base 10: "[u'1']"
  • 请看一下编辑。另外,当您使用my_dict['id'] 时,您现在得到的结果是什么?
  • 如果我运行(my_dict[u'id'][0]) 现在我得到u'[u\\'2\\']'
  • 您仍然可以使用int(ast.literal_eval(ast.literal_eval("u'[u\\'2\\']'"))[0]),但您不应该这样做!您需要从源头修复错误。
【解决方案2】:

您可能正在尝试使用request.data 读取数据。你应该试试request.POST

因此,在您的情况下,要读取 product_name,您可以这样做:request.POST['product_name'],对于其他字段也是如此。

【讨论】:

    猜你喜欢
    • 2015-07-18
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    • 2021-12-03
    • 2021-07-02
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多