为什么python / django在split()之后返回一个unicode列表

时间:2012-06-13 19:09:22

标签: python database django unicode split

我在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 %}

无效。有什么想法吗?

1 个答案:

答案 0 :(得分:7)

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

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

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

  

正如我们在1.5版的Django代码中所做的那样,我们建议你   从代码中的__future__库导入unicode_literals。   然后,当你特意想要创建一个bytestring文字时,   字符串前缀为'b'。

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