当前位置: 首页 > 面试题库 >

在Django管理中保存对象时出现Unicode错误

阳狐若
2023-03-14
问题内容

在我的django应用程序中,我有一些对象导致django
admin中的相应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 response headers must be in US-ASCII format

奇怪的是,该对象已正确保存到数据库中。

有人知道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使用其他东西并安全地检索对象?


问题答案:

现在,我将默认id用作模型的每个类的主键。因此,从管理站点访问对象时,URL中没有禁止的字符。

我确实建议在大多数情况下将默认ID保留为主键



 类似资料:
  • 问题内容: 尝试将first_name,last_name保存到Django的auth_user模型时,出现奇怪的错误消息。 失败的例子 成功的例子 MySQL设置 表字符集和排序规则 表auth_user具有utf-8字符集,并带有utf8_general_ci排序规则。 UPDATE命令的结果 使用UPDATE命令将上述值更新到auth_user表时,它没有引发任何错误。 PostgreSQL

  • 今天发生了一件奇怪的事。我在请求后从支付网关导入数据: 示例: 是的,我的客户没有遵循在支付服务上手动注册签名的ID序列,所以我正在导入并保持相同的pk。 此代码按预期工作,数据现在与支付服务同步(所有导入的对象)。 现在奇怪的行为: 我正在使用Django Rest框架,在API中的POST(check validated_data)之后,在这一行出现以下错误: 重复键值违反唯一约束"plans

  • 问题内容: 我和之间有关系 所以当我尝试持久化对象时 我懂了 如您所见,它尝试插入正确的值,但是以某种方式将其标记为语法错误。我认为它缺少左右的单引号,但是由于它是在后台进行查询的,所以我不知道如何解决它。请注意,我对同一项目中的其他实体执行了完全相同的操作,并且工作正常。太沮丧了!! 问题答案: GROUP确实是保留的关键字,您必须对其进行转义。在JPA 2.0中,有一种标准化的方法来指定分隔标

  • 问题内容: 我在Django管理员方面遇到一些问题。 在syncdb之后,结果是: 这是什么意思? 无论如何,当我访问网站管理面板http://www.example.com/admin/时,我收到以下消息: setting.py包含: ur.py包含: 问题答案: 如果你仅从项目中运行一个站点,则实际上并不需要该框架,因此最简单的解决方法是从你的项目中删除以下项目,错误应消失: 你也可以从she

  • 问题内容: 在Django 1.0之前,有一种简单的方法来获取对象的管理url,并且我编写了一个小过滤器,如下所示: 基本上我使用的是URL反向功能,视图名称为 获取网址。 你可能已经猜到了,我正在尝试更新到最新版本的Django,这是我遇到的障碍之一,用于获取管理url的方法不再起作用。 如何在Django 1.0中执行此操作?(或者是1.1,因为我正在尝试更新为svn中的最新版本)。 问题答案