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

2023-12-02

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

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

Thanks.


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

  • django-crispy-forms
  • jQuery
  • plupload
  • 引导程序3
  • 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

Now in 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"}]
            }}))

在views.py中不需要做任何特别的事情,除了'file_form'应该在上下文中。确保smartfields are in INSTALLED_APPS and urls have 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 文件已过时。

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

ModelForm 中 FileField 上传的进度条 (Django) 的相关文章

随机推荐

  • 为什么Fortran可以分配这么大的数组?

    我编写了一段科学代码 像往常一样 这归结为计算代数特征值方程中的系数 计算这些系数需要对多维数组进行积分 这会迅速大幅增加内存使用量 一旦计算出矩阵系数 就可以释放原始的预积分多维数组 并由智能求解器接管 因此内存使用不再是大问题 正如您所
  • 指定绘图上多条线的颜色[重复]

    这个问题在这里已经有答案了 Pandas 数据框分组图 我有一个与上述问题类似的数据框 但它有大约 8 个股票代码 我定义了一个名为 颜色 的颜色列表 与股票代码相对应 但是当我这样做时 df groupby ticker adj clos
  • 使用map-reduce构建分布式KD树

    我正在尝试使用map reduce 构建分布式KD 树 分布式KD树的描述可以在这里找到Dkd Tree I have a feature vector of images having dimension 20 I have to bui
  • 如何在powershell中的正则表达式中插入变量

    我试图查看文件中是否存在某些输入的条目 因此我使用正则表达式来查询每一行 cat file where match script fileName 其中 fileName 是其他地方定义的一些输入 如何更改正则表达式以插入变量而不是匹配 f
  • 空手道:[主要] INFO com.intuit.karate - karate.env 系统属性为:null [重复]

    这个问题在这里已经有答案了 在尝试使用生成的令牌执行下一个场景时 在令牌身份验证流程之后出现错误 主要 INFO com intuit karate 空手道系统属性为 null 我使用了以下代码 特征文件 Feature Login Tok
  • Python项目结构和相关导入

    我是Python新手 我在谷歌上搜索了很多 并阅读了一些有关相对导入等的文章 尽管事实上我无法让它工作 请考虑我的以下项目结构 Project docs log prev src a py tests tests1 b py tests2
  • 直接从无头图像字节数组创建缩略图

    我的应用程序一次显示大量图像缩略图 目前 我将所有全尺寸图像保留在内存中 并简单地在 UI 中缩放图像以创建缩略图 但是 我宁愿只在内存中保留小缩略图 并且仅在必要时加载全尺寸图像 我认为这很容易 但与仅在 UI 中缩放全尺寸图像相比 我生
  • 您的凭据不允许访问此资源 Twitter API 错误

    我正在研究 Twitter api 一些 api 得到了响应 但statuses home timeline jsonapi 和其他 api 没有得到响应 出现错误 errors code 220 message Your credenti
  • 从 AEM 下载包后如何在 Eclipse 中使用它

    我从包管理器中从正在运行的 AEM 实例下载了一个 zip http localhost 4502 crx packmgr index jsp 解压缩后的 zip 文件包含 jcr root and META INF 我想在此 zip 文件
  • 如何自动允许 IE 中阻止的内容?

    我使用下面的代码作为示例菜单
  • 水平和垂直滑动的动态视图

    请检查上面的视图 我必须相应地创建一个视图 当我们从左向右滑动时 图像将与从右向左滑动相同 当我从上到下滑动时 将会出现网络视图 并且从下到上滑动图像将会出现 所有数据 例如图像和网址 都是动态的 并且数据将来自服务器 我还必须在其中应用拉
  • JAXB 将循环引用映射到 XML

    我有一个包含循环的对象图 我如何让 JAXB 处理这个问题 我尝试使用 XmlTransient子类中的注释 但 JAXB 编组器仍然检测到循环 Entity XmlRootElement public class Contact Id p
  • 如何让函数执行得更快?

    我有以下功能 https i stack imgur com yXA67 png where mu是矩阵 n X 行和 n Y 列 d X 和 d Y 是距离矩阵 在 R 中实现此函数的一种方法是 H mu lt function mu d
  • jQuery.noConflict() 破坏插件

    我在 Rails 应用程序中同时使用 Prototype 和 jQuery 为了解决 冲突我执行以下操作 这大部分工作正常 但我正在尝试使用a plugin不喜欢它并抛出一个 is not a function type error 我能做
  • 为什么 Node.js 没有原生 DOM?

    当我发现这一点时Node js 使用 V8 JavaScript 引擎构建 我想 太好了 网页抓取会随着页面变得更容易 将像在浏览器中一样呈现 带有 支持 XPath 和任何 AJAX 调用的 本机 DOM 执行的页面 为什么它使用与 Ch
  • 使用 Android 拍照时出现问题(垂直相机 | 肖像)

    使用以下代码显示相机的垂直预览 它的工作原理 但 我得到一张风景照片 我如何垂直构建它 我有垂直预览视图 但无法垂直保存图片 问候和感谢 弗兰 ONCLICK public void onClick View arg0 camera tak
  • 使用多线程的JPA持久化

    当我尝试使用持久化对象时遇到问题多线程 细节 假设我有一个对象PaymentOrder其中有一个列表PaymentGroup 一对多关系 和PaymentGroup包含一个列表CreditTransfer 再次是一对多关系 由于数量Cred
  • Keras ValueError:尝试将模型加载到另一个平台时未知层:名称

    我在 Nvidia Quadro 板上使用 Keras 2 2 4 训练了一个卷积神经网络 我已将经过训练的模型保存在两个单独的文件中 一个文件 model json 描述架构 另一个文件 model h5 包含所有权重 我想在运行 Ker
  • 从一系列繁忙时间范围中获取可用时间范围

    假设你有一个数组BUSY会议的时间范围 start 9 00 AM end 10 00 AM start 12 00 PM end 2 00 PM start 5 00 AM end 7 00 PM 我想得到一组回报可用的24 小时范围内的
  • ModelForm 中 FileField 上传的进度条 (Django)

    我正在寻找一些实现文件上传进度条的指针 该进度条提供有关 ModelForm 内 FileField 上传当前状态的反馈 我的 ModelForm 有很多字段 不仅仅是 FileField 我想用进度条显示进度的实时反馈 Thanks 这是