Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django'的分块上传;s模型的现场实现_Python_Django_Jquery File Upload - Fatal编程技术网

Python Django'的分块上传;s模型的现场实现

Python Django'的分块上传;s模型的现场实现,python,django,jquery-file-upload,Python,Django,Jquery File Upload,技术问题:实现这样一个模型字段,它可以分块上传文件 详细信息: 我知道,而且我 我打算用它 我不理解Django的架构: SomeModelField类具有formfield函数,我们可以在其中定义 “form_class”,指向SomeFormField 定义的SomeFormField具有属性widget,该属性可能包含SomeWidget SomeWidget可以有媒体类,该类可以有js变量,该变量包含链接脚本的元组 py,指向某个视图函数 视图功能 根据我目前的理解,假设以下来源(

技术问题:实现这样一个模型字段,它可以分块上传文件

详细信息:

  • 我知道,而且我 我打算用它
  • 我不理解Django的架构:
    • SomeModelField类具有formfield函数,我们可以在其中定义 “form_class”,指向SomeFormField
    • 定义的SomeFormField具有属性widget,该属性可能包含SomeWidget
    • SomeWidget可以有媒体类,该类可以有js变量,该变量包含链接脚本的元组
    • py,指向某个视图函数
    • 视图功能

  • 根据我目前的理解,假设以下来源(不完整):

  • SomeModelField类

    class ChunkedFileField(models.FileField):
    
        def __init__(self, *args, **kwargs):
            super(ChunkedFileField, self).__init__(*args, **kwargs)
    
        description = "Chunked file"
    
        __metaclass__ = models.SubfieldBase
    
        def __init__(self, *args, **kwargs):
            kwargs['max_length'] = len(UPLOAD_TO) + 1 + FILE_NAME_MAX_LENGTH
            super(ChunkedFileField, self).__init__(*args, **kwargs)
    
        def formfield(self, form_class=None, choices_form_class=None, **kwargs):
            defaults = {'form_class': ChunkedFileFormField}
            defaults.update(kwargs)
            return super(ChunkedFileField, self).formfield(**defaults)
    
    class ChunkedFileFormField(forms.FileField):
    
        widget = ChunkedFileUploadWidget
    
        def __init__(self, *args, **kwargs):
            print 'ChunkedUploadFileField'
            super(ChunkedFileFormField, self).__init__(*args, **kwargs)
    

  • SomeFormField类

    class ChunkedFileField(models.FileField):
    
        def __init__(self, *args, **kwargs):
            super(ChunkedFileField, self).__init__(*args, **kwargs)
    
        description = "Chunked file"
    
        __metaclass__ = models.SubfieldBase
    
        def __init__(self, *args, **kwargs):
            kwargs['max_length'] = len(UPLOAD_TO) + 1 + FILE_NAME_MAX_LENGTH
            super(ChunkedFileField, self).__init__(*args, **kwargs)
    
        def formfield(self, form_class=None, choices_form_class=None, **kwargs):
            defaults = {'form_class': ChunkedFileFormField}
            defaults.update(kwargs)
            return super(ChunkedFileField, self).formfield(**defaults)
    
    class ChunkedFileFormField(forms.FileField):
    
        widget = ChunkedFileUploadWidget
    
        def __init__(self, *args, **kwargs):
            print 'ChunkedUploadFileField'
            super(ChunkedFileFormField, self).__init__(*args, **kwargs)
    

  • SomeWidget类

    class ChunkedFileUploadWidget(ClearableFileInput):
    
        def __init__(self, attrs=None):
            super(ChunkedFileUploadWidget, self).__init__(attrs)
            self.attrs['id'] = 'chunked_upload'
    
        class Media:
            js = (
                'js/cu.js',
                'js/jquery.js',
                'js/jquery.ui.widget.js',
                'js/jquery.iframe-transport.js',
                'js/jquery.fileupload.js',
                'js/spark-md5.js',
                'js/ksb_django_fields.js',
            )
    

  • 问题: 我在为模型字段构建分块上传的方法上正确吗

    我不明白,我怎样才能解决这种情况: 如果表单包含一组字段,其中一个是我的ChunkedFileFormField,那么表单的POST请求应该只发生一次,但是对于我的分块字段,POST请求应该针对每个分块部分发生

    如何解决这个问题?任何想法或你的实现经验都将是辉煌的

    注意:如果可能的话,可以使用文章链接、代码示例或git源代码参考