Django模板:将unicode转换为utf-8 – 一种非常见的非内置操作

Django templates: Converting unicode to utf-8 — a very common operation that is not built-in

这里有一个关于django模板和unicode值的基本问题。一个常见的用例是传递给django模板的unicode值,但是这些值不能打印出来!

用户对django表单的输入值编码为unicode:https://docs.djangoproject.com/en/dev/ref/unicode/表单提交

因此,视图通常使用Unicode值。当需要输出这些值时,需要将它们编码为UTF-8。我想在Django模板中进行这种编码,但似乎没有内置的过滤器。这篇文章描述了如何创建自定义过滤器:网址:http://seewah.blogspot.com/2009/11/django-template-urlencode-unicode.html

即使是Jinja2也不提供这种内置过滤器。

因此,尽管我可以将一个对象传递给我的模板并访问该对象内部的各种结构,但这并没有那么有用,因为我无法将这些结构中的Unicode字符串转换为UTF-8字符串!

我是不是错过了什么?

更新(1小时后):

让我把一些伪代码放在这里更清楚:

在django模板中,我有如下内容:

1
2
3
4
5
6
7
8
9
{% for an_obj in list_of_obj %}


<li>
{{an_obj.a_unicode_field}}
</li>


{% endfor %}

但是当一个unicode字段是unicode值时,这将失败。我想做的是:

1
2
3
<li>
{{an_obj.a_unicode_field | encode:"utf-8"}}
</li>

但是,没有内置的"编码"过滤器。这是一个非常常见的操作:我需要对每个模板中输出的每个字符串进行UTF-8编码…


如果你看到:

[U'关键字']例如写入模板:test.info

您可以使用:test.info.0来显示:关键字。

这是你需要的吗?

当做马西莫


说Unicode值不能在模板中打印出来完全是胡说八道。我不知道你为什么这么想。

不需要做任何特殊的事情来编码为UTF-8。这是默认值。如果你看到的是不同的东西,你在某个地方配置错误了。

更新后编辑否,仍不了解问题所在。第一个例子就行了。不需要专门编码为UTF-8。当它是Unicode时,它是如何"失败"的?(你所说的"当它是Unicode值"是什么意思?)从django传递到模板的所有值都是Unicode。)