【问题标题】:How to tell Django staticfiles to not collect user uploaded media directory files?如何告诉 Django 静态文件不收集用户上传的媒体目录文件?
【发布时间】:2012-02-29 11:35:29
【问题描述】:

我有一个非常简单的问题,我无法找到答案。使用 Django 静态文件应用程序,我通过键入以下命令行调用静态收集例程:python manage.py collectstatic

我的问题是我有几个应用程序提供静态数据 + 一个包含用户上传文件的 媒体目录。 Django 将所有文件复制到静态目录,包括媒体文件!

我只是希望 Django 在我调用 python manage.py collectstatic 时不要将用户上传的文件复制到静态目录。有人有想法吗?尝试了--ignore 选项但没有成功...

提前谢谢你。

【问题讨论】:

  • 请在此处添加 statisfiles 设置
  • 是否可以将用户上传的媒体移动到 MEDIA_ROOT(他们所属的位置)?
  • 其实文件是由用户上传到MEDIA_ROOT的。一切正常,我可以在我的模板中使用它们。问题是 collectstatics 将MEDIA_ROOT/* 复制到STATIC_ROOT。所以我担心它会通过复制每个用户上传的文件来结束我的服务器超载......
  • 您的 MEDIA_ROOT 不应该在您的 STATIC_ROOT 中。
  • 我同意@jpic。 MEDIA_ROOT 默认情况下收集到静态中。你必须告诉 Django 这样做。您是否将相同的目录添加到STATICFILES_DIRS

标签: django django-staticfiles


【解决方案1】:

这是 django.contrib.staticfiles.finders.DefaultStorageFinder 的问题,尝试从 STATICFILES_FINDERS 中删除。

【讨论】:

    【解决方案2】:

    那么,如果您使用--ignore,究竟是什么不起作用?

    虽然真正的解决方案不是混合用户生成的内容和静态文件。

    如果您将两种类型分开,您可以轻松地将静态文件置于版本控制之下,而不必在这方面处理排除问题。事实上,与媒体(用户生成)和静态文件的分离是静态文件背后的基本原理:

    在以前的 Django 版本中,放置静态资源是很常见的 在 MEDIA_ROOT 以及用户上传的文件中,并在 媒体网址。引入 staticfiles 应用程序的部分目的是 更容易将静态文件与用户上传的文件分开 文件。

    关于这个主题的文档非常全面:https://docs.djangoproject.com/en/dev/howto/static-files/

    【讨论】:

      猜你喜欢
      • 2018-10-06
      • 2014-01-25
      • 2012-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-24
      • 2013-09-03
      • 2011-07-23
      相关资源
      最近更新 更多