ModelForm (Django) 中 FileField 上传的进度条

     2023-02-24     76

关键词:

【中文标题】ModelForm (Django) 中 FileField 上传的进度条【英文标题】:Progress bar for FileField upload in a ModelForm (Django) 【发布时间】:2015-03-16 20:29:36 【问题描述】:

我正在寻找一些实现文件上传进度条的指针,该进度条提供有关 ModelForm 内 FileField 上传当前状态的反馈。

我的 ModelForm 有很多字段(不仅仅是 FileField),我想用进度条显示进度的实时反馈。

谢谢。

【问题讨论】:

【参考方案1】:

这是我的问题解决方案:django-smartfields,这个应用程序可以负责报告进度、转换图像或视频、清理旧文件等等。它对进度报告有一些要求:

django-crispy-forms jQuery plupload bootstrap3 bootbox

我现在正在为 django-smartfields 编写文档,但该应用程序的这一部分仍未记录,但这里是您将如何使用它。

from django.db import models
from django.conf import settings
from smartfields import fields

class FileModel(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, editable=False)
    file = fields.FileField(uploadTo='files')
    # other fields ....
    parent_field_name = 'user'

    def has_upload_permission(self, user, field_name=None):
        return user == self.user

现在在forms.py:

from django import forms
from myapp.models import FileModel
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout
from smartfields.crispy.layout import FileField

class FileForm(forms.ModelForm):

    class Meta:
        model = FileModel
        fields = ('file', other fields...)

    @property
    def file_upload_url(self):
        return reverse("smartfields:upload", kwargs=
            'app_label': 'test_app',
            'model': FileModel.__name__,
            'field_name': 'file',
            'pk': self.instance.pk,
            'parent_field_name': 'user'
            'parent_pk': self.instance.user.pk
        )


    def __init__(self, *args, **kwargs):
        super(FileForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper(self)
        self.helper.form_tag = False
        self.helper.layout = Layout(
            FileField('file', plupload_options=
                'url': self.file_upload_url,
                'filters': 
                    'max_file_size': "20mb",
                    'mime_types': ['title': "Documents",
                                    'extensions': "pdf,doc"]
            ))

除了'file_form' 应该在上下文中之外,不需要在views.py 中做任何特别的事情。确保smartfieldsINSTALLED_APPSurls 中包含url(r'^smartfields/', include('smartfields.urls', namespace='smartfields')),,或者您可以通过扩展smartfields.views.FielUpload 创建自定义上传视图。

在模板中:

% load static crispy_forms_tags %
<link rel="stylesheet" href="% static 'bootstrap3/css/bootstrap.min.css' %">
<link rel="stylesheet" href="% static 'bootstrap3/css/bootstrap-theme.min.css' %">
<link rel="stylesheet" href="% static 'css/smartfields.css' %">

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="% static 'bootstrap3/js/bootstrap.min.js' %"></script>
<script type="text/javascript" src="% static 'plupload/js/plupload.full.min.js' %"></script>
<script type="text/javascript" src="% static 'js/bootbox.min.js' %"></script>
<script type="text/javascript" src="% static 'js/smartfields.js' %"></script>

<form method="POST">
  % crispy file_form %
  <input class="btn btn-default" type="submit" name="btn_save" value="Save">
</form>

如果您有任何问题或由于某种原因它不起作用,请告诉我。确保您使用的是 github 上的版本,pypi 上的 javascript 文件已过时。

【讨论】:

有没有使用智能字段实现视频压缩的例子? @eol 当然,这是我添加到文档中的一个简单示例:django-smartfields.readthedocs.org/en/latest/processors.html 你就是男人。这也适用于 s3 的 boto/storages 吗?目前是否可以在模块内以多种方式压缩一个字段(成多个文件),同时只上传一次? 它被实现为独立于文件存储后端,它还通过机架空间存储进行了测试,因此它也应该与 s3 一起使用,如果不是,请告诉我。添加多种格式进行转换非常容易,您只需在字段的依赖项列表中添加另一个 FileDependency 即可。 干杯。将及时向大家发布。感谢您制作了一款出色的应用。

ModelForm (Django) 中 FileField 上传的进度条

】ModelForm(Django)中FileField上传的进度条【英文标题】:ProgressbarforFileFielduploadinaModelForm(Django)【发布时间】:2015-03-1620:29:36【问题描述】:我正在寻找一些实现文件上传进度条的指针,该进度条提供有关ModelForm内FileField上传当前状... 查看详情

ModelForm (Django) 中 FileField 上传的进度条

】ModelForm(Django)中FileField上传的进度条【英文标题】:ProgressbarforFileFielduploadinaModelForm(Django)【发布时间】:2015-03-1620:29:36【问题描述】:我正在寻找一些实现文件上传进度条的指针,该进度条提供有关ModelForm内FileField上传当前状... 查看详情

在 Django 中序列化 ModelForm 对象的最佳方法是啥?

】在Django中序列化ModelForm对象的最佳方法是啥?【英文标题】:WhatisthebestwaytoserializeaModelFormobjectinDjango?在Django中序列化ModelForm对象的最佳方法是什么?【发布时间】:2010-09-2700:31:21【问题描述】:我正在为我当前的项目使用Djang... 查看详情

ImageField() 不在 ModelForm 中保存图像 - Django/Python

】ImageField()不在ModelForm中保存图像-Django/Python【英文标题】:ImageField()notsavingimagesinModelForm-Django/Python【发布时间】:2015-05-2403:08:21【问题描述】:当我尝试从我的表单上传图片时,一切都在处理,但没有保存图片。有人知道为什... 查看详情

将字段添加到模型中但不在表单中的 django ModelForm

】将字段添加到模型中但不在表单中的djangoModelForm【英文标题】:AddfieldtodjangoModelFormthatareinthemodelbutnotintheform【发布时间】:2015-08-3111:41:06【问题描述】:我有一个django模型和一个ModelForm。该模型有大约10个字段,但我只想用Mode... 查看详情

从 Django ModelForm 中动态排除字段

】从DjangoModelForm中动态排除字段【英文标题】:DynamicallyexcludingfieldfromDjangoModelForm【发布时间】:2018-11-0807:38:43【问题描述】:我想以编程方式排除表单中的一个字段。目前我有这个:classRandomForm(BaseForm):def__init__(self,*args,**kwargs)... 查看详情

如何在 Modelform 的网格中呈现 Django CheckoxInput?

】如何在Modelform的网格中呈现DjangoCheckoxInput?【英文标题】:HowtorenderDjangoCheckoxInputinagridfromModelform?【发布时间】:2022-01-0317:05:13【问题描述】:models.pyclassMyModel(Model):author=ForeignKey(settings.AUTH_USER_MODEL,on_delete=CASCADE)tit 查看详情

如何在 Django ModelForm 中获取实例

】如何在DjangoModelForm中获取实例【英文标题】:HowgetInstanceinDjangoModelForm【发布时间】:2017-08-1712:27:14【问题描述】:我正在尝试使用基于类的通用视图UpdateView更新Django中的模型。但是我遇到了一些实例问题。当我单击提交按钮... 查看详情

django之modelform详解(代码片段)

ModelForm是Django中编写基于Model定制表单的方法,可以提高Model复用性。 使用时Django会根据 django.db.models.Field (用于数据库衔接)自动转化为 django.forms.Field (用于表单前端展示、后端验证)。  编辑数据:如果... 查看详情

django - 使用 FormView 和 ModelForm 更新模型

】django-使用FormView和ModelForm更新模型【英文标题】:django-updatemodelwithFormViewandModelForm【发布时间】:2014-03-0314:59:37【问题描述】:我不知道如何在FormView中使用ModelForm来更新已经存在的实例??此URL上的POST表单:r\'/object/(?P&lt... 查看详情

django之modelform组件(代码片段)

ModelForm组件是django中一个非常强大的组件,其功能主要有一校验字段  ModelForm组件的主要格式为:继承组件fromdjangoimportformsclassUserModelForm(forms.ModelForm):指定表model=models.UserInfo指定要显示的字段fields=‘__all__‘#显示所有,常... 查看详情

如何使用 Ajax 在 Django 中更新 modelForm

】如何使用Ajax在Django中更新modelForm【英文标题】:HowtoupdateamodelForminDjangowithAjax【发布时间】:2015-12-2216:46:11【问题描述】:我想用Ajax更新一个模板。我的问题是:我在表单的列表中选择了一个客户,然后在第二个列表中的同一... 查看详情

使用 Django,如何在模板中动态设置 ModelForm 字段值?

】使用Django,如何在模板中动态设置ModelForm字段值?【英文标题】:UsingDjango,howdoIsetaModelFormfieldvaluedynamicallyinthetemplate?【发布时间】:2021-01-2722:31:43【问题描述】:我正在尝试利用复选框字段为用户选择的收藏夹创建模型实例。... 查看详情

form和modelform

...中,所有的表单类都作为django.forms.Form的子类创建,包括ModelForm关于django的表单系统,主要分两种基于django.forms.Form:所有表单类的父类基于django.forms.ModelForm:可以和模型类绑定的Formform实例#app01/views.pyfromdjango.shortcutsimportrender,HttpRe 查看详情

Django中的ModelForm无法接收数据

】Django中的ModelForm无法接收数据【英文标题】:ModelForminDjangofailstoreceivedata【发布时间】:2016-11-1520:20:58【问题描述】:我有一个ModelForm,所有字段都是我想要的。当我在HTML中呈现此表单时,我提供了这些字段中所需的所有数据... 查看详情

你能从它的 ModelForm 中访问一个 Django 模型的“属性”吗?

】你能从它的ModelForm中访问一个Django模型的“属性”吗?【英文标题】:CanyouaccessaDjangoModel"property"fromit\'sModelForm?【发布时间】:2011-04-1823:58:02【问题描述】:我有一个带有非模型字段属性的Django模型类,例如:def_get(self... 查看详情

如何使用 Modelform 和 jquery 在 django 中获取相互依赖的下拉菜单?

】如何使用Modelform和jquery在django中获取相互依赖的下拉菜单?【英文标题】:HowtogetInterdependentdropdownsindjangousingModelformandjquery?【发布时间】:2012-12-1618:23:01【问题描述】:我是django和jquery的新手。我正在开发一个基于django的应用... 查看详情

django组件-modelform(代码片段)

ModelForm组件功能就是把model和form组合起来.首先导入ModelFormfromdjango.formsimportModelForm在视图函数中,定义一个类,比如就叫StudentList,这个类要继承ModelForm,在这个类中再写一个原类Meta(规定写法,并注意首字母是大写的)在这个原类中,有... 查看详情