【问题标题】:Why is python / django returning a unicode list after split()为什么 python / django 在 split() 之后返回一个 unicode 列表
【发布时间】:2012-06-16 19:32:04
【问题描述】:

我在 Django 中有一个带有 TextField 的表单,它接收逗号分隔的输入,例如test1,test2,test3,test4,然后像这样拆分:

test = request.POST.get('test', '').split(',')

然后保存到 Postgres 数据库模型

然后检索显示

然而,当显示时,返回的拆分列表是 unicode,

[u'test1', u'test2', u'test3', u'test4']

而不是想要的

['test1', 'test2', 'test3', 'test4']

这是为什么?问题是我不知道如何在 django 模板页面中显示数组的每个元素 - 常规

{% for element in list %}
    <p>{{ element }}</p>
{% endfor %}

不工作。有什么想法吗?

【问题讨论】:

  • 正如我的回答中所解释的,您的循环应该完全按预期工作。你得到了什么出乎你意料的输出?
  • 你为什么想要unicode?​​span>

标签: python database django unicode split


【解决方案1】:

Django uses Unicode wherever it can by default。总的来说,这是一件好事。

您获得 Unicode 字符串的原因是 get() 方法返回您正在拆分的 Unicode 字符串。

这应该不是问题 - Django 将按照您的期望在任何地方接受和处理 Unicode 字符串。事实上,上面链接的 Django 文档建议使用 Python 3.x 样式并将 Unicode 作为默认字符串:

正如我们在 1.5 版的 Django 代码中所做的那样,我们建议您 从代码中的 __future__ 库导入 unicode_literals。 然后,当您特别想创建一个字节串文字时, 在字符串前面加上'b'。

您的循环应该完全按预期工作。

【讨论】:

    猜你喜欢
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多