django admin 上传文件的后期处理

2024-02-11

我有一个标准的 Django 管理页面,用于上传多个文件。我希望做到以下几点:

  1. 直接上传部分文件
  2. 一个文件在保存之前需要使用 AES 加密(加密可以通过 python 或通过 http 到加密服务器来完成。)
  3. 需要解压缩、处理并重新打包 zip 文件。

我现在只有一个非常基本的管理页面。谁能指出我从哪里开始的正确方向?请准确指出我需要修改哪个文件,因为我仍然不熟悉 django。

只需一个简短的指导即可。谢谢。


我没有测试这些代码,但我可以指导您从哪里开始。 我建议你在模型的保存函数中编写解压代码。这是最简单的方法,但不是最好的方法。 Django admin 可以像自定义 django admin 一样处理多种表单。

我希望你的模型有点像这些

from django.db import models
from django.core.files.storage import FileSystemStorage

fs = FileSystemStorage(location="/var/www/yoursite/private/")

class SetOfFiles(models.Model):
    name = models.CharField('set name'), max_length=225, null=False, blank=False)

class File(models.Model):
    set = models.ForeignKey(SetOfFiles, verbose_name=_('set'))
    file = models.FileField(storage=fs)

    def save(self, *args, **kwargs):
        if not self.id:
            ... unzip your file ...
            ... encrypt your file if necessary ...
        super(File, self).save(*args, **kwargs)

在相关应用程序中创建 admin.py 自定义您的管理员以处理多个插入:

from django.contrib import admin
class FileInline(admin.TabularInline):
    model = File
class SetOfFilesAdmin(admin.ModelAdmin):
    list_display = ('name',)
    inlines = [FileInline]
admin.site.register(SetOfFiles, SetOfFilesAdmin)

这里还有解压缩使用 FileBrowser 上传的 .zip 文件 http://djangosnippets.org/snippets/1893/代码,但由于使用 FileBrowser 应用程序,它可能有点复杂。您只需使用以下命令即可解压缩文件zipfile python 模块 http://docs.python.org/library/zipfile.html。 您也可以使用PyCrypto https://www.dlitz.net/software/pycrypto/AES 加密。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

django admin 上传文件的后期处理 的相关文章

随机推荐