在 drf 中导入 csv 文件
Import csv file in drf
我正在尝试创建一个视图以使用 drf 和 django-import-export 导入 csv。
我的示例(我正在逐步学习调试):
class ImportMyExampleView(APIView):
parser_classes = (FileUploadParser, )
def post(self, request, filename, format=None):
person_resource = PersonResource()
dataset = Dataset()
new_persons = request.data['file']
imported_data = dataset.load(new_persons.read())
return Response("Ok - Babysteps")
但是我得到这个错误(使用邮递员):
Tablib has no format 'None' or it is not registered.
更改为 imported_data = Dataset().load(new_persons.read().decode(), format='csv', headers=False)
我收到这个新错误:
InvalidDimensions at /v1/myupload/test_import.csv
No exception message supplied
有没有人有任何提示或可以提供参考?我正在关注这个 site,但我不得不“翻译”成 drf。
从小步骤着手是个好主意。我建议先让一个独立的脚本工作,这样你就可以检查文件是否可以读取和导入。
如果您可以设置断点并进入 django-import-export 源代码,这将为您节省大量时间来了解正在发生的事情。
示例测试函数(基于example app):
def test_import():
with open('./books-sample.csv', 'r') as fh:
dataset = Dataset().load(fh)
book_resource = BookResource()
result = book_resource.import_data(dataset, raise_errors=True)
print(result.totals)
您可以对此进行调整,以便导入您自己的数据。一旦一切正常,您就可以将它与您的 post()
函数集成。
我建议获取示例应用程序 运行,因为它将演示导入的工作原理。
InvalidDimensions
表示您尝试加载的数据集与 Dataset
预期的格式不匹配。尝试删除 headers=False
arg 或显式声明 headers(headers=['h1', 'h2', 'h3']
- 为您的 headers 交换正确的名称)。
我正在尝试创建一个视图以使用 drf 和 django-import-export 导入 csv。
我的示例(我正在逐步学习调试):
class ImportMyExampleView(APIView):
parser_classes = (FileUploadParser, )
def post(self, request, filename, format=None):
person_resource = PersonResource()
dataset = Dataset()
new_persons = request.data['file']
imported_data = dataset.load(new_persons.read())
return Response("Ok - Babysteps")
但是我得到这个错误(使用邮递员):
Tablib has no format 'None' or it is not registered.
更改为 imported_data = Dataset().load(new_persons.read().decode(), format='csv', headers=False)
我收到这个新错误:
InvalidDimensions at /v1/myupload/test_import.csv
No exception message supplied
有没有人有任何提示或可以提供参考?我正在关注这个 site,但我不得不“翻译”成 drf。
从小步骤着手是个好主意。我建议先让一个独立的脚本工作,这样你就可以检查文件是否可以读取和导入。
如果您可以设置断点并进入 django-import-export 源代码,这将为您节省大量时间来了解正在发生的事情。
示例测试函数(基于example app):
def test_import():
with open('./books-sample.csv', 'r') as fh:
dataset = Dataset().load(fh)
book_resource = BookResource()
result = book_resource.import_data(dataset, raise_errors=True)
print(result.totals)
您可以对此进行调整,以便导入您自己的数据。一旦一切正常,您就可以将它与您的 post()
函数集成。
我建议获取示例应用程序 运行,因为它将演示导入的工作原理。
InvalidDimensions
表示您尝试加载的数据集与 Dataset
预期的格式不匹配。尝试删除 headers=False
arg 或显式声明 headers(headers=['h1', 'h2', 'h3']
- 为您的 headers 交换正确的名称)。