文件上传有时仅在Django中有效

问题描述

我正在尝试上传文本文件,这些文件将转换为csvs,然后转换为我的数据库。但是,仅当我在项目目录中创建了文本文件时,文件上传才有效。例如,当我在此处创建一个文本文件时,它可以工作-

enter image description here

我可以使用“上传文件”按钮将此文件拖到我的模板中,这将使数据库中的行成行。

当我在桌面上创建test.txt文件并尝试将其导入模板时,什么也没有发生,并且它返回一个空的csv文件

Views.py

@login_required(login_url='login')
    def upload(request,*args,**kwargs):
        if request.method == "GET":
        return render(request,'users/upload.html')

    if request.method == "POST":
        # Create subject object in database
       cram_set = CramSet.objects.create(
            subject='Other',name='',)

        raw_file = request.FILES['file']
        contents = raw_file.read().decode('UTF-8')
        question_pattern = re.findall(
            r'^\d+\)\s*((?:(?:(?!^\d+\))[\s\S])*?\n(([A-Z])\)(?:(?!^\d+\))[\s\S])*?)$)?(?:(?!^\d+\))[\s\S])*?)\nAnswer:\s*(\3|FALSE|TRUE)\nExplanation:\s*(.*)',contents,re.M)
        df = pd.DataFrame(question_pattern,columns=["Question","Answer","1","2","Explanation"])

        clean_df = df.drop(columns=["1","2"])
        data_set = clean_df.to_csv(index=False)
        io_string = io.StringIO(data_set)
        next(io_string)

        for column in csv.reader(io_string,delimiter=',',quotechar='"',quoting=csv.QUOTE_MINIMAL):
            _,created = Question.objects.update_or_create(
                question=column[0],answer=column[1],explanation=column[2],cram_set_id=cram_set.pk,)
        return redirect('/users/' + request.user.username + '/')
    
    return render(request,'users/upload.html')

我是否需要将这些文件保存在项目的媒体文件中,以便它们上传后可以使用它们?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)