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

Int*_*nex -2 python database django unicode split

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

test = request.POST.get('test', '').split(',')
Run Code Online (Sandbox Code Playgroud)

然后保存到Postgres数据库模型

然后检索并显示

但是,显示时,返回的拆分列表为unicode,

[u'test1', u'test2', u'test3', u'test4']
Run Code Online (Sandbox Code Playgroud)

而不是期望的

['test1', 'test2', 'test3', 'test4']
Run Code Online (Sandbox Code Playgroud)

为什么是这样?这个问题是我无法弄清楚如何在django模板页面中显示数组的每个元素 - 常规

{% for element in list %}
    <p>{{ element }}</p>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

不工作.有什么想法吗?

Gar*_*tty 7

Django默认使用Unicode.总的来说这是件好事.

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

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

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

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