问题标签 [django-storage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1012 浏览

django - 如何使用 South 的 DataMigration 更改 Django 模型 ImageField 实例的存储后端?

我正在尝试将一些模型 ImageFields 迁移到使用S3BotoStorage来自django-storages. 作为此过程的一部分,我已更改模型的 ImageField 声明以包含storage=instance_of_s3botostorage参数,并且将图像保存到 ImageField 属性的模型的新实例现在按预期存储在 S3 中。

我也尝试将现有模型实例移动到将它们的数据存储在 S3 中,所以写了一个这样的 South DataMigration:

但这显然没有达到预期的效果,因为图像文件只是使用旧storage后端保存的——考虑到 save() 实际上是FieldFile属于FileField

那么,如何移动/更改模型实例上的文件存储?

0 投票
1 回答
849 浏览

python - 自定义 Django 存储

我有一个网页,人们可以在其中上传自己的图像,我想将它们存储在可销售的存储空间中。我愿意使用 Amazon S3,但后来我决定使用自己的文件服务器和 Web 服务器来提供静态内容(图像)

但我不知道该怎么做。正确的方法是什么,我应该使用什么自定义 Django 存储?我将如何将图像上传到这些文件服务器?

0 投票
1 回答
2119 浏览

django - Getting "new-line character seen in unquoted field" when parsing csv document using django-storages

I am trying to parse csv files that have been uploaded to Amazon S3 using django-storages. I keep getting a "Error: new-line character seen in unquoted field - do you need to open the file in universal-newline mode?". The normal work around for this is to open the file with "rU", but that does not seem to work with django storages. If I drop the file directly on the server and open from there it works, I just want to avoid storing the files directly on the server if possible. Here is the code I am using:

0 投票
3 回答
8290 浏览

django - 在 django 的 s3 上存储图像和缩略图

我正在尝试使用 django-storages、boto 和 sorl-thumbnail 将我的图像缩略图并存储在 s3 上。我有它的工作,但它很慢,即使是小图像。我不介意保存表单并将图像上传到 s3 时速度很慢,但我希望它在此之后快速显示图像。

这个 SO question 的答案解释说,在第一次访问之前不会创建缩略图,但您可以使用 get_thumbnail() 预先创建它。

Django + S3 (boto) + Sorl Thumbnail: 优化建议

我正在这样做,现在似乎 thumbnail_kvstore 表中的所有条目都是在上传图像时创建的,而不是在显示时创建的。

问题是显示图像的页面仍然很慢。查看调试工具栏中的日志记录面板,看起来与 s3 的通信仍然很多。似乎在上传和缓存图像和缩略图后,页面应该快速呈现而不与 s3 通信。

我究竟做错了什么?谢谢!

更新:weak hack 似乎已经让它工作了,但我很想知道如何正确地做到这一点:

https://github.com/asciitaxi/sorl-thumbnail/commit/545cce3f5e719a91dd9cc21d78bb973b2211bbbf

更新:@sorl 的更多信息

我正在使用 2 个视图:

添加视图:在此视图中,我提交表单以创建包含图像的模型。图片上传到s3。在 post_save 信号中,我调用 get_thumbnail() 在需要之前生成缩略图:

显示视图:在此视图中,我显示在添加视图中生成的缩略图:

没有补丁:

添加视图:在 kvstore 表中创建 3 个条目,访问缓存 10 次(6 组,4 次获取),调试工具栏的日志记录选项卡显示“建立 HTTP 连接”12 次

显示视图:kvstore 表中仍然只有 3 个条目,只有 1 个从缓存中获取,但调试工具栏仍然显示“建立 HTTP 连接”3 次

只有第 122 行的更改:

添加视图:同上,除了日志只说“建立 HTTP 连接”2 次 显示视图:同上,除了日志只说“建立 HTTP 连接”1 次

还在第 118 行添加更改:

添加视图:与上面相同,但现在我们减少到 2 条“建立 HTTP 连接”消息 显示视图:与上面相同,根本没有日志消息

更新:看起来 storage._setup() 被调用了两次, storage.url() 被调用了一次。根据时间,我会说每个人都与 s3 建立连接:

这似乎反映在 boto 日志记录中,它说“建立 HTTP 连接”3 次。

0 投票
1 回答
849 浏览

django - django:在本地磁盘上注册解压文件

[我提前为这个问题的长度道歉。]

我在 Debian 挤压上使用 Django 1.2.3-3+squeeze1。

我正在编写一个应用程序,它将 zip 文件上传到临时位置的磁盘,解压缩它们,然后将结果保存到永久位置。解压缩的文件在数据库中注册为解压缩后调用的类 FileUpload。上传的压缩文件也对应一个类,但出于这个问题的目的,我将忽略它。FileUpload看起来像这样。

我也使用由定义的表格

获取磁盘上解压缩文件的函数。将它们注册到数据库,并将它们移动到正确的位置称为 addFile. 我以前使用这个:

这行得通,但问题是它将整个文件转储到内存中。对于大文件,特别是考虑到 Python 并不以内存经济着称,这会消耗大量内存。所以我切换到这个:

我被迫子类UploadedFile化,因为已经存在(在 django/core/files/uploadedfile.py)中的派生类似乎都没有做我想做的事。

temporary_file_path功能在那里,因为Django File Uploads 文档

UploadedFile.temporary_file_path()

只有上传到磁盘的文件才会有这个方法;它返回临时上传文件的完整路径。

似乎该类在函数中FileSystemStorage查找此属性, 如下所述。_save

如果n是 zip 存档中文件的相对路径,则用法为

这可行,但我跟踪代码,发现代码正在使用流式传输,显然在这种情况下最佳做法是将文件从临时位置复制到永久位置。有问题的代码在 类django/core/files/storage.py_save函数中 FileSystemStorage。其中_savename是目的地的相对路径,content是一个File对象。

_save函数正在寻找属性 temporary_file_path。我相信这段代码是由temporary_file_path前面提到的函数 触发的django/core/files/uploadedfile.py。但是,实际传递的类(对应于content参数)是<class 'django.db.models.fields.files.FieldFile'>,这是content.__dict__该对象的属性 dict( ) 的样子:

temporary_file_path附加到 数据成员UnzippedFile内部的类。_file所以 content._file有一个temporary_file_path属性,而不是content 它本身。

这就是常规文件上传的样子。如您所见,它是相似的。

我很难详细了解代码是如何从对象FileUploadForm save传递到Storage对象的。特别是 Django 表单代码非常晦涩难懂。

无论如何,我的问题是,在所有这些设置之后,下面的第一个选项file_move_safe应该如何/何时被激活?我在这里看到了不匹配。这是一个错误吗?谁能澄清一下?

0 投票
1 回答
1631 浏览

python - 删除 Django-Storages S3 中的默认文件名

我将 django-storages 与 amazon S3 一起使用,并通过以下方式上传图像文件:

但是,当文件上传到 S3 时,它会在末尾附加原始文件名。我该如何摆脱它并替换它,而不是说一些随机哈希?

0 投票
2 回答
1763 浏览

django - Attribute Error when running collectstatic for Django app

I'm receiving the following error when I run collectstatic:

Everything works fine until I try and gzip my files using storages "AWS_IS_GZIPPED" setting (see my settings.py below).

I am using django-storages which utilizes boto to send my static files up to S3 and django-compressor to compress them.

Here is a full traceback of my error:

Here is my storage.py

which comes straight from the django-compressor docs.

I also have the following in my settings.py

Any help would be much appreciated. A bit lost in the woods.

0 投票
1 回答
3524 浏览

css - 使用 STATIC_URL 的 Django CSS 背景图像

我刚刚将我的存储后端更改为 Amazon S3,我意识到我的背景没有为我的网站加载。我查看并意识到在我的 CSS(实际上是 SASS)中我已经指定了背景 URL(static/mysite/images/background.gif)。

我想知道我应该如何解决这个问题。当然,我可以将其更改为我的新静态 URL,但这似乎是一种不好的做法。{{ STATIC_URL }}所以我尝试在我的HTML 中加载我的背景图像,body但它首先渲染我的背景,然后再repeat: no-repeat;渲染我的实际 CSS,导致背景在加载 CSS 时在整个屏幕上重复。无论如何,我不喜欢将我的样式混合到我的文档中。

那么在 Django 中为背景图像提供相对路径的最佳方法是什么?我应该将我的 CSS 设置为模板,并通过视图直接指向它吗?这似乎也很乱。

还是我应该忘记让它与 static_url 无关,而只是在我的 CSS 中硬编码?

0 投票
1 回答
1582 浏览

django - 使用 boto 的 django-storages - 无法上传 mp3,但可以上传图片。此外,遭受 HTTP 307 的痛苦

我正在使用 django-storages (1.1.4) 的 boto (2.2.1) 后端将文件上传到 S3 存储桶。它适用于图像,但是当我尝试上传电影文件(小 mov、小 avi)或 mp3 时,我收到了 Broken pipe 错误。

这很奇怪。

深入研究 Django 回溯,我看到以下异常:

哪种适合我使用 Cyber​​duck 直接检查存储桶的经验:有时它抱怨我的证书*.s3.amazonaws.com和域不匹配*.s3-external-3.amazonaws.com

事实上,存储桶日志显示我正在接受 HTTP 307 临时重定向。是否可能是 AWS 以一种方式发送某些内容类型,而另一些则以另一种方式发送,但 boto/something 无法跟上这一点?电影的上传似乎确实击中了 S3 两次,而图像击中了一次,所以很可能 boto 正在应对 307 罚款(并且 boto 中支持 307 的封闭票已经有几年了),所以它可以好吧,没关系,还有其他事情发生了。

但是什么?我已经从一个愉快的高效的一天变成了一个头,这是非常令人沮丧的。

关于可能发生的事情和/或尝试解决此问题的任何建议?

(请注意,使用 boto S3 后端或简单的 S3 后端会失败 - 只是 boto 给了我看起来更具体的错误)

0 投票
3 回答
403 浏览

django - Git神秘地删除东西(编辑:实际上是django-storages)

问题:有时,但不是每次,Git 都会删除存储库的static目录。我们不确定是什么触发了它,但它似乎发生在分支之间合并或有时甚至只是检出分支时。它无需询问即可执行此操作,并吃掉跟踪的文件。

的背景:

  • 我有一个(私人)项目,它有几个分支,“发布”,“开发”,多个功能线。
  • 我们有两个人(我和@stevejalim)在做这个 repo。这个问题发生在我们俩身上。
  • 我纯粹为我的 git 命令使用命令行;Steve 混合使用了命令行和 Git Tower。
  • 这是一个带有static目录的 Django 项目。我们可能在过去的某个时候git rm编辑过该目录,或者将其放入,但不是最近。并且我们的开发分支的负责人没有进入并且有文件被跟踪。static.gitignorestatic.gitignorestatic
  • 这种情况很少发生,以至于我们不确定这是我们正在做的事情,还是间歇性问题,Git 的错误或损坏的树
  • 只有在另一个分支合并回develop. 但是分支总是develop. develop但我们不确定。
  • 我们正在使用 git-flow,但在使用非 git-flow 命令时也会出现问题。

  • 作为何时会发生这种情况的示例:

    1)史蒂夫有一个干净的开发分支(没有更改提交或阶段)且稳定。他削减了一个新版本,git flow release start|finish并且在这个过程中(可能是从 master 到 development 的反向合并),整个 /static/ 树被删除了。

    2)史蒂夫通过放弃更改来修复删除(基本上取消删除文件)。但是随后,Steve 简单地从 master 切换回了 development,并且 /static/ 目录再次被删除(这是使用 Git Tower)

    3) 有时只是从功能分支合并到作为临时合并进行开发就可以触发它。不过,它似乎确实经常在剪切新版本时发生

这可能与我们如何修复 /static/ 目录的切换有关吗?批量取消删除已删除内容的最佳方法是什么?丢弃本地更改或硬重置 HEAD 似乎都无法解决问题。变基可能对我们有帮助吗?

更新我们刚刚再次体验了这一点git add .- 没有改变分支,没有合并。这对诊断有帮助吗?

这是 Steve 的 .git/config 的内容:

以下是 的内容.gitignore