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中有空行,您试图访问第一个元素,但在本例中不存在该元素