【问题标题】:How to serve user-uploaded files in Django?如何在 Django 中提供用户上传的文件?
【发布时间】:2012-07-05 17:51:39
【问题描述】:

我正在编写一个 Django 应用程序,用户可以在其中上传图像,但我不知道如何为它们提供服务。我可以看到两种方式:

1-将它们作为静态文件上传:将它们上传到我项目目录下的static文件夹中,然后运行python manage.py collectstatic,但是我不知道每次上传文件时如何自动运行此命令,这似乎需要大量处理,因为每次服务器都会删除并重新加载我的静态应用程序中的所有内容。

2- 在我的 urls.py 中使用django.views.static.serve

url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
        'document_root': settings.MEDIA_ROOT,
    }),

the doc 不建议将其用于生产。

提供用户上传文件的推荐方式是什么?

【问题讨论】:

  • 我认为通过 Apache 或类似的网络服务器提供这些文件是个好主意。如果您需要像用户权限这样的进一步控制,可以选择 mod_xsendfile。

标签: django


【解决方案1】:

您上传的文件进入MEDIA_ROOT,可以使用MEDIA_ROOT 提供。需要在settings.py中设置这些参数。

您可以通过 django dev 服务器为您的开发提供服务,但您可以将其配置为从 apache 或其他服务器提供服务。

参考Django managing stored files

【讨论】:

  • 您有任何关于如何将其配置为从 apache 服务的示例吗?
  • 使用与静态文件相同的配置。还是您在问如何配置 apache 以提供一般文件?
  • 我正在使用网络派系托管,并按照docs.webfaction.com/software/django/getting-started.html 中提供的静态媒体服务说明进行操作。这是用于django.contrib.staticfiles,但我需要另一个目录,我可以在其中上传文件并提供它们,而不使用django.contrib.staticfiles。我会在 webfaction 特定论坛中询问。谢谢。
猜你喜欢
  • 1970-01-01
  • 2014-07-11
  • 2013-03-20
  • 1970-01-01
  • 2015-10-23
  • 2018-02-27
  • 2016-04-04
  • 2016-10-22
  • 1970-01-01
相关资源
最近更新 更多