我正在尝试编写一个JSON初始数据夹具,它将在每次调用后加载syncdb.
我initial_data.json在我的mysite/myapp/fixtures目录中放置了一个文件:
[
{
"model": "myapp.Person",
"pk": 1,
"fields": {
"first_name": "Tom",
"last_name": "Yam"
}
}
]
Run Code Online (Sandbox Code Playgroud)
当文件以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
Run Code Online (Sandbox Code Playgroud)
根据Django 文档,我需要设置ensure_ascii=False何时使用非ASCII数据和JSON序列化程序,但我无法想象如何做(因为它是从syncdb函数调用的.
有任何想法如何使用UTF-8编码的JASON文件作为夹具?
我无法理解为什么以下代码会给出不同的结果:
from datetime import datetime
def foo():
return {datetime.now() : True}
a = {}
a.update(foo())
a.update(foo())
a.update(foo())
Run Code Online (Sandbox Code Playgroud)
和:
a = {}
for i in xrange(3):
a.update(foo())
Run Code Online (Sandbox Code Playgroud)
前者a最终有三个元素,而后者a最后只有一个元素(从最后一次迭代).