如何在 Django 中创建 Zip 文件并下载?

现在,让我们看看 django 创建 zip 文件的示例。
您将学习如何创建 zip 文件并在 django 中下载。
您可以理解 django 创建 zip 存档文件并下载它作为响应的概念。
逐步解释从文件夹创建一个 zip 文件并在 django 应用程序中下载。
让我们看看下面的示例从文件夹创建 zip 文件并在 django 应用程序中下载。

在这个例子中,我们将在 python 中使用zipfile库,因此我们可以帮助完全下载 zip 文件。
让我们看看下面的示例从文件夹创建 zip 文件并在 django 应用程序中下载

您可以将这些示例与 django3 (django 3) 版本一起使用。

让我们看看下面带有输出的简单示例:

第 1 步:创建项目

在这一步中,我们将使用 django-admin 创建一个新的 django 项目。返回命令行界面并运行以下命令:

 django-admin startproject example 

第 2 步:创建应用程序

 python3 manage.py startapp core 

第 3 步:更新 setting.py

在这里,不要忘记在 settings.py 文件中注册新应用程序。在已安装的应用程序下,只需将“核心”添加到列表中:

....
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'core',
]

第 4 步:数据库设置

下一步,我们将修改 settings.py 文件并更新数据库设置以配置 mydb 数据库: settings.py

DATABASES = {  
    'default': {  
        'ENGINE': 'django.db.backends.mysql',  
        'NAME': 'example',  
        'USER':'root',  
        'PASSWORD':'root',  
        'HOST':'localhost',  
        'PORT':'3306'  
    }  
}  

第 5 步:创建模型

在这一步中,我们将需要用于存储联系人的数据库模型。打开 core/models.py 文件并添加以下代码:
core/models.py

from django.db import models

class Blog(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.name

    class Meta:
        ordering = ['-created_at']

创建这些模型后,您需要使用以下命令创建迁移:

第 6 步:创建迁移和迁移

python manage.py makemigrations
python manage.py migrate

第 7 步:Django 的管理界面

为了能够从管理界面使用新模型,我们需要注册它。将此代码添加到 core/admin.py 模块: core/admin.py

from django.contrib import admin

from .models import Blog


class BlogAdmin(admin.ModelAdmin):
    pass
admin.site.register(Blog, BlogAdmin)

第 8 步:创建视图

在这一步中,我们需要创建用于执行 ajax 图片上传到数据库的视图。打开 core/views.py 文件并添加。 core/views.py

import zipfile
from django.http import HttpResponse
from .models import Blog

README_NAME = 'README.md'
README_CONTENT = """
Welcome to our Website!!
"""
ZIPFILE_NAME = 'tuts-station.zip'


def downloadZip(request):
    """Download archive zip file of code snippets"""
    response = HttpResponse(content_type='application/zip')
    zf = zipfile.ZipFile(response, 'w')

    # create the zipfile in memory using writestr
    # add a readme
    zf.writestr(README_NAME, README_CONTENT)

    # retrieve snippets from ORM and them to zipfile
    blogs = Blog.objects.all()
    for blog in blogs:
        zf.writestr(blog.name, blog.description)

    # return as zipfile
    response['Content-Disposition'] = f'attachment; filename={ZIPFILE_NAME}'
    return response

第 9 步:创建 URL

在本节中,我们将创建 url 来访问我们的视图。转到 urls.py core/urls.py 文件并按如下方式更新它: core/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('download-zip/', views.downloadZip, name='download')
]

接下来,我们将要求修改您的根 preoject 文件夹的 urls.py 以更新文件。
example/urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('core.urls'),
]

运行服务器

在这一步中,我们将运行本地开发服务器来玩我们的应用程序,而无需将其部署到网络上。

 python manage.py runserver 

接下来,使用网络浏览器访问该地址。

http://localhost:8000/download-zip/

输出

我希望它会帮助你……

发表评论

邮箱地址不会被公开。 必填项已用*标注