问题标签 [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.
django - 如何使用 South 的 DataMigration 更改 Django 模型 ImageField 实例的存储后端?
我正在尝试将一些模型 ImageFields 迁移到使用S3BotoStorage
来自django-storages
. 作为此过程的一部分,我已更改模型的 ImageField 声明以包含storage=instance_of_s3botostorage
参数,并且将图像保存到 ImageField 属性的模型的新实例现在按预期存储在 S3 中。
我也尝试将现有模型实例移动到将它们的数据存储在 S3 中,所以写了一个这样的 South DataMigration:
但这显然没有达到预期的效果,因为图像文件只是使用旧storage
后端保存的——考虑到 save() 实际上是FieldFile
属于FileField
那么,如何移动/更改模型实例上的文件存储?
python - 自定义 Django 存储
我有一个网页,人们可以在其中上传自己的图像,我想将它们存储在可销售的存储空间中。我愿意使用 Amazon S3,但后来我决定使用自己的文件服务器和 Web 服务器来提供静态内容(图像)
但我不知道该怎么做。正确的方法是什么,我应该使用什么自定义 Django 存储?我将如何将图像上传到这些文件服务器?
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:
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 次。
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
。其中_save
,name
是目的地的相对路径,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
应该如何/何时被激活?我在这里看到了不匹配。这是一个错误吗?谁能澄清一下?
python - 删除 Django-Storages S3 中的默认文件名
我将 django-storages 与 amazon S3 一起使用,并通过以下方式上传图像文件:
但是,当文件上传到 S3 时,它会在末尾附加原始文件名。我该如何摆脱它并替换它,而不是说一些随机哈希?
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.
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 中硬编码?
django - 使用 boto 的 django-storages - 无法上传 mp3,但可以上传图片。此外,遭受 HTTP 307 的痛苦
我正在使用 django-storages (1.1.4) 的 boto (2.2.1) 后端将文件上传到 S3 存储桶。它适用于图像,但是当我尝试上传电影文件(小 mov、小 avi)或 mp3 时,我收到了 Broken pipe 错误。
这很奇怪。
深入研究 Django 回溯,我看到以下异常:
哪种适合我使用 Cyberduck 直接检查存储桶的经验:有时它抱怨我的证书*.s3.amazonaws.com
和域不匹配*.s3-external-3.amazonaws.com
事实上,存储桶日志显示我正在接受 HTTP 307 临时重定向。是否可能是 AWS 以一种方式发送某些内容类型,而另一些则以另一种方式发送,但 boto/something 无法跟上这一点?电影的上传似乎确实击中了 S3 两次,而图像击中了一次,所以很可能 boto 正在应对 307 罚款(并且 boto 中支持 307 的封闭票已经有几年了),所以它可以好吧,没关系,还有其他事情发生了。
但是什么?我已经从一个愉快的高效的一天变成了一个头,这是非常令人沮丧的。
关于可能发生的事情和/或尝试解决此问题的任何建议?
(请注意,使用 boto S3 后端或简单的 S3 后端会失败 - 只是 boto 给了我看起来更具体的错误)
django - Git神秘地删除东西(编辑:实际上是django-storages)
问题:有时,但不是每次,Git 都会删除存储库的static
目录。我们不确定是什么触发了它,但它似乎发生在分支之间合并或有时甚至只是检出分支时。它无需询问即可执行此操作,并吃掉跟踪的文件。
的背景:
- 我有一个(私人)项目,它有几个分支,“发布”,“开发”,多个功能线。
- 我们有两个人(我和@stevejalim)在做这个 repo。这个问题发生在我们俩身上。
- 我纯粹为我的 git 命令使用命令行;Steve 混合使用了命令行和 Git Tower。
- 这是一个带有
static
目录的 Django 项目。我们可能在过去的某个时候git rm
编辑过该目录,或者将其放入,但不是最近。并且我们的开发分支的负责人没有进入并且有文件被跟踪。static
.gitignore
static
.gitignore
static
- 这种情况很少发生,以至于我们不确定这是我们正在做的事情,还是间歇性问题,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
: