我花了几个小时尝试调试此问题。我正在尝试将产品目录导入我的应用程序。我正在使用Django Import-export导入csv文件。我试图通过管理网站和一个简单的上传文件导入它。在这两种情况下,我都遇到一些错误。您有解决办法的想法吗?
第一种方法:通过管理网站导入csv文件
遇到错误:导入的文件编码错误:'charmap'编解码器无法解码位置13365的字节0x9d:字符映射到
该方法似乎不能接受某些字符(“”)。如何更改代码以接受任何字符?我已经删除了以下字符:£,-并尝试使用UTF-8对其进行编码。我还进行了搜索以删除所有非ASCII字符(128-255)
2eme方法:通过网站导入csv文件
遇到错误:'MultiValueDict'对象不可调用
views.py
def simple_upload(request):
if request.method == 'POST':
file_format = request.POST.get('file-format')
product_resource = ProductResource()
dataset = Dataset()
new_products = request.FILES['Price_List']
if file_format == 'CSV':
imported_data = dataset.load(new_products.read().decode('utf-8'),format='csv')
result = product_resource.import_data(dataset, dry_run=True)
elif file_format == 'JSON':
imported_data = dataset.load(new_products.read().decode('utf-8'),format='json')
# Testing data import
result = product_resource.import_data(dataset, dry_run=True)
if not result.has_errors():
# Import now
product_resource.import_data(dataset, dry_run=False)
return render(request, 'catalog/simple_upload.html')
models.py
from import_export import resources
from .models import Product
class ProductResource(resources.ModelResource):
class Meta:
model = Product
skip_unchanged = True
report_skipped = False
simple_upload.html
{% extends 'base.html' %}
{% block body %}
<h3>Import Data</h3>
<p>importing to database</p>
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="importData">
<p>Please select format of file.</p>
<select name="file-format" class="form-control my-3">
<option selected>Choose format...</option>
<option>CSV</option>
<option>JSON</option>
</select>
<button class="btn btn-primary" type="submit">Import</button>
</form>
{% endblock %}
非常感谢,