gpt4 book ai didi

python - 在 django admin 中保存对象时出现 unicode 错误

转载 作者:太空宇宙 更新时间:2023-11-03 12:52:17 25 4
gpt4 key购买 nike

在我的 django 应用程序中,我有一些对象导致 django 管理中的相应 URL 不是 ascii。 (例如:http://mysite/admin/myapp/myclass/Présentation/)

我可以毫无问题地编辑对象,但是当我保存它时出现以下错误:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 24: ordinal not in range(128), HTTP 响应 header 必须采用 US-ASCII 格式

奇怪的是对象被正确保存到数据库中

有人知道 Django 管理员是如何管理 unicode 的吗?任何有助于解决此问题的信息、指示或想法都将不胜感激。

提前致谢

更新:这是模型的代码

class Plugin(models.Model):
"""Some subcontent that can be added to a given page"""
class Meta:
ordering = ['ordering']

name = models.CharField(max_length=32, primary_key=True)
div_id = models.CharField(default='rightcol', max_length=32)
published = models.BooleanField(default=True,
help_text=_("If this is not checked, it is not displayed on the page."))
ordering = models.IntegerField(default=1,
help_text=_("plugins are sorted with this number in ascending order"))
content = models.TextField(blank=True)
registration_required = models.BooleanField(_('registration required'),
help_text=_("If this is checked, only logged-in users will be able to view the page."))

def __unicode__(self):
return u"%s -- %s" % (self.name, self.div_id)

更新:很明显,不建议在 URL 中使用非 ascii 字符。这就是我的问题的原因,我已经改变了它。

有谁知道 Django 管理员使用什么来构建对象的 URL。我猜这是主键。这样对吗?有没有办法强制 Django 使用其他东西并安全地检索对象?

最佳答案

我很确定您的数据库可能正在使用 latin1 编码。 Django 假定您已将所有内容设置为 unicode (utf8)。

要检查这一点,请进入 MySQL Shell 并键入:

mysql> show variables like 'char%';

如果你看到一堆 latin1(或任何其他不是 utf8 的编码,除了二进制),你必须这样做:打开 my.cnf 并查找 [mysqld] 部分。确保在 tmpdir =/tmp 之后,您有以下几行:

default-character-set=utf8
collation_server=utf8_unicode_ci
character_set_server=utf8
skip-external-locking
skip-character-set-client-handshake

重启服务器。

您必须重新创建或手动编辑您拥有的所有数据库和表的编码,更改 my.cnf 只会影响将要创建的数据库。

希望我帮到了你。

编辑:顺便问一下,您使用的是哪个 Django 版本?似乎这是在 1.1 中修复的错误:http://code.djangoproject.com/ticket/10267

关于python - 在 django admin 中保存对象时出现 unicode 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2011629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com