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

Django模板:将unicode转换为utf-8——一种非常常见的非内置操作,django,unicode,utf-8,django-templates,jinja2,Django,Unicode,Utf 8,Django Templates,Jinja2,这里有一个关于django模板和unicode值的基本问题 一个常见的用例是将unicode值传递给django模板,但这些值无法打印出来 django表单的用户输入值编码为unicode: 因此,视图通常使用unicode值。 当需要输出这些值时,需要将它们编码为utf-8。 我想在django模板中进行编码,但似乎没有内置的过滤器。这篇文章描述了如何创建自定义过滤器: 甚至jinja2也不提供这种类型的内置过滤器 因此,尽管我可以将一个对象传递到我的模板中并访问该对象中的各种结构,但它并

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

django表单的用户输入值编码为unicode:

因此,视图通常使用unicode值。 当需要输出这些值时,需要将它们编码为utf-8。 我想在django模板中进行编码,但似乎没有内置的过滤器。这篇文章描述了如何创建自定义过滤器:

甚至jinja2也不提供这种类型的内置过滤器

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

我是不是遗漏了什么


更新(1小时后):

让我在这里放一些伪代码来更清楚地说明:

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

{% for an_obj in list_of_obj %}

<li><a href="/my_url/?send_string={{an_obj.a_unicode_field | urlencode}}">{{an_obj.a_unicode_field}}</a></li>

{% endfor %}
{u obj%列表中某个对象的%u}
  • {%endfor%}
    但当一个unicode字段是unicode值时,这将失败。我想做的是:

    <li><a href="/my_url/?send_string={{an_obj.a_unicode_field | encode: "utf-8" | urlencode}}">{{an_obj.a_unicode_field | encode: "utf-8"}}</a></li>
    

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

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

    编码为utf-8不需要做任何特殊的工作。这是默认值。如果你看到的是不同的东西,那么你在某个地方错误地配置了某些东西

    更新后编辑否,仍然不了解问题所在。第一个例子很有效。不需要专门编码到utf-8。当它是unicode时,它是如何“失败”的?(您所说的“当它是unicode值时”是什么意思?从Django传递到模板的所有值都是unicode。)

    如果您看到:

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

    对于visualize:关键字,可以使用:{test.info.0}}

    这是你需要的吗

    问候
    Massimo

    在编写模板时,值不是自动序列化为UTF-8吗?看看Django文档,我不知道这是否是OP遇到的相同问题,但我的问题是,当我从模板中的对象输出字段时,即{page.title},我的字符串即(u'Respage Test')的前缀是u,与unicode无关。这是因为您传递了一个包含单个字符串的元组,而不是一个单独的字符串。谢谢,我刚回来删除我的注释:)结果是,我在为page.title赋值的行末尾有一个“,”。这是将其从字符串更改为1值的元组。哎呀!