Я не тестировал этот код в живом проекте django, но именно так я и буду кодировать вашу задачу.
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})
Это всего лишь пример, но вы можете добавить дополнительную логику, например, переименование и т. Д.
PS Не могудобавить комментарий, но если вы находитесь на python3 и получили SyntaxError на
print zf.namelist()
, просто заключите его в квадратные скобки:
print(zf.namelist())