如何解压缩zip文件并在python Django中将其显示为列表

如何解压缩zip文件并在python Django中将其显示为列表,python,django,zip,unzip,Python,Django,Zip,Unzip,我正在学习python和django,我想创建一个端点,它接受zip文件并对其进行迭代,并显示zip文件中的项目列表。实现这一点最简单的方法是什么?我尝试过一些东西,因为我在django的知识一点也不好 from django.core.files.storage import FileSystemStorage import zipfile class Upload(View): def post(self, request): context = {}

我正在学习python和django,我想创建一个端点,它接受zip文件并对其进行迭代,并显示zip文件中的项目列表。实现这一点最简单的方法是什么?我尝试过一些东西,因为我在django的知识一点也不好

from django.core.files.storage import FileSystemStorage
import zipfile

class Upload(View):
    def post(self, request):
        context = {}

        if request.method == 'POST':
            uploaded_file = request.FILES['filename']
            zf = zipfile.ZipFile(uploaded_file)
            print zf.namelist()


            for filename in zf.namelist():

                fs = FileSystemStorage()                    
                rename = 'uploadedFile.jpg'                 
                name = fs.save(rename, filename)            
                context['url'] = fs.url(name)               

        return render(request, 'app.html', context)

所以基本上我的目的是从中获取一个zipfile并重命名它,然后为每个zipfile创建一个url。我声明的代码不是这样做的正确方法,因为它会带来一些错误,你能帮我找到正确的方法吗

我还没有在LiveDjango项目上测试过这段代码,但这是我编写任务代码的方式

from zipfile import ZipFile

def get_filenames(path_to_zip):
    """ return list of filenames inside of the zip folder"""
    with ZipFile(path_to_zip, 'r') as zip:
        return zip.namelist()
在你看来:

class Upload(View):
    def post(self, request):
        # as you use class based views you can skip the check of request type (request.method == 'POST'). 
        # It always will be POST as it post() method
        filenames = get_filenames('your_zip.zip')           
        return render(request, 'app.html', {'filenames': filenames})
这只是一个例子,但您可以添加一些额外的逻辑,如重命名等

p.S.无法添加评论,但如果您使用的是python3,并且使用了SyntaxError

print zf.namelist()
用括号括起来:

print(zf.namelist())

那是什么错误?错误在
zf.namelist()
syntax error@SelcukYeah它可以工作,我像你一样做了,修改了一点。谢谢你帮我