gpt4 book ai didi

django - 在 Django 中使用 UTF-8 编码的 JSON fixture 文件

转载 作者:行者123 更新时间:2023-12-04 21:47:11 24 4
gpt4 key购买 nike

我正在尝试编写一个 JSON 初始数据装置,它将在每次调用 syncdb 后加载。 .

我放置了一个 initial_data.json文件在我的 mysite/myapp/fixtures目录:

[
{
"model": "myapp.Person",
"pk": 1,
"fields": {
"first_name": "Tom",
"last_name": "Yam"
}
}
]

当文件以 ASCII 编码时,一切正常,但是当我以 UTF-8 编码(我需要使用非 ASCII 字符)保存它时,出现以下错误:
Problem installing fixture 'initial_data.json': Traceback (most recent call last):
File "D:\Tom\DjangoEnv\Lib\site-packages\django\core\management\commands\loaddata.py", line 190, in handle
for obj in objects:
File "D:\Tom\DjangoEnv\Lib\site-packages\django\core\serializers\json.py", line 47, in Deserializer
raise DeserializationError(e)
DeserializationError: No JSON object could be decoded

根据 Django documentation ,我需要设置 ensure_ascii=False在使用非 ASCII 数据和 JSON 序列化程序时,但我不知道如何去做(因为它是从 syncdb 函数调用的。

任何想法如何使用 UTF-8 编码的 JASON 文件作为夹具?

最佳答案

load_data不会通过 ensure_ascii序列化程序的选项,因此您有两个选择:

  • 将数据转换为在加载之前转义的 ascii unicode,即:
    import codecs
    encoded = codecs.open('/tmp/tst.txt', 'r', 'utf-8').read().encode(
    'ascii', 'backslashreplace')
    open('/tmp/tst-encoded.txt', 'w').write(encoded)
  • 编写您自己的管理命令,该命令将通过 ensure_ascii

  • 希望这可以帮助。

    关于django - 在 Django 中使用 UTF-8 编码的 JSON fixture 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12632862/

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