Django /user\u upload/(列表索引超出用户模型的范围)处的索引器
即使下面的代码可以工作,它也会抛出上面提到的错误。这用于将数据导入用户模型Django /user\u upload/(列表索引超出用户模型的范围)处的索引器,django,Django,即使下面的代码可以工作,它也会抛出上面提到的错误。这用于将数据导入用户模型 def user_upload(request): template = "client_admin/user_upload.html" data = User.objects.all() if request.method == "GET": return render(request, template, prompt) csv_
def user_upload(request):
template = "client_admin/user_upload.html"
data = User.objects.all()
if request.method == "GET":
return render(request, template, prompt)
csv_file = request.FILES['file']
if not csv_file.name.endswith('.csv'):
messages.error(request, 'THIS IS NOT A CSV FILE')
data_set = csv_file.read().decode('UTF-8')
io_string = io.StringIO(data_set)
next(io_string)
for column in csv.reader(io_string, delimiter=',', quotechar="|"):
_, created = User.objects.update_or_create(
username=column[0],
first_name=column[1],
last_name=column[2],
email=column[3],
)
context = {}
return render(request, template, context)
用户模型是
class User(AbstractUser):
is_approved = models.CharField(max_length=80, choices=APPROVAL_CHOICES, default='t-2')
is_member = models.BooleanField(default=False)
is_premium_member = models.BooleanField(default=False)
回溯
Traceback:
File "/home/biju/Desktop/Dev/multitenant/lib/python3.8/site-packages/django/core/handlers/exception.py" in inner
34. response = get_response(request)
File "/home/biju/Desktop/Dev/multitenant/lib/python3.8/site-packages/django/core/handlers/base.py" in _get_response
115. response = self.process_exception_by_middleware(e, request)
File "/home/biju/Desktop/Dev/multitenant/lib/python3.8/site-packages/django/core/handlers/base.py" in _get_response
113. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/biju/Documents/mtenant/client_admin/views.py" in user_upload
66. username=column[0],
Exception Type: IndexError at /user_upload/
Exception Value: list index out of range
您在csv中有一个空行,并且您并没有检查该行是否有您期望的列数,所以您可以这样做
for column in csv.reader(io_string, delimiter=',', quotechar="|"):
if len(column) > 3:
_, created = User.objects.update_or_create(
username=column[0],
first_name=column[1],
last_name=column[2],
email=column[3],
)
tracebackusername=column[0]中出现错误,这是回溯,我不知道用户类的inedex编号,所以基本上csv中有空行,您试图访问第一个元素,但在本例中不存在该元素