django管理员上传文件的后期处理

django管理员上传文件的后期处理,django,file-upload,django-admin,Django,File Upload,Django Admin,我有一个标准的Django管理页面,用于上传多个文件。我希望做以下工作: 直接上传一些文件 一个文件在保存之前需要用AES加密(加密可以通过python或通过http到加密服务器完成) zip文件需要解压、处理和重新打包 我现在只有一个非常基本的管理页面。有人能告诉我从哪里开始的正确方向吗?请准确地告诉我我需要修改哪个文件,因为我仍然不熟悉django 只需一个简短的指示将不胜感激。谢谢。有些选项是: 编写crontab作业以处理文件并更新“已处理”字段 写一篇文章(高级) 对于可能的冗长/缓慢

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

  • 直接上传一些文件
  • 一个文件在保存之前需要用AES加密(加密可以通过python或通过http到加密服务器完成)
  • zip文件需要解压、处理和重新打包
  • 我现在只有一个非常基本的管理页面。有人能告诉我从哪里开始的正确方向吗?请准确地告诉我我需要修改哪个文件,因为我仍然不熟悉django

    只需一个简短的指示将不胜感激。谢谢。

    有些选项是:

  • 编写crontab作业以处理文件并更新“已处理”字段
  • 写一篇文章(高级)

  • 对于可能的冗长/缓慢操作,我会选择选项1。如果你已经掌握了优秀的Python技能,那么#2就很有趣。

    我没有测试这些代码,但我可以告诉你从哪里开始。 我建议您在模型的save函数中编写解压缩代码。这是最简单的方法,但不是最好的。 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应用程序,代码可能有点复杂。您只需使用。 您也可以使用AES加密