在部署时在Django中显示图像的简单方法(DEBUG = false)

elG*_*elG 3 python django image

我正在使用DJango 1.8和python 3.4.3,并且已在Debug模式下运行我的应用程序,并且找到了一种在MEDIA_ROOT上配置的目录内显示图像的方法,这是我的第一个问题,也是我发现的解决方案:如何在DJango中上传和显示图像。但是阅读文档后,我发现该解决方案不适用于服务的应用程序,因此,如果我停止使用“ Debug = True”,则不会显示图像,并且我必须使用此链接上公开的选项之一:静态部署文件,但我没有钱去支付其他服务器,我只能在pythonanywhere上支付我的托管费用,对于选择使用同一服务器作为映像的选项,我不知道如何实现自动化,collectstatic并且也没有用户上传新图像时不知道如何触发它。

我使用过ASP.NET和PHP5,但它们都没有问题,因此,我有两个问题:

  1. 有没有一种简单的方法来显示图像URL?
  2. 如果我使用DEBUG = True部署我的应用程序,是否存在高风险的安全问题?

我希望您能为我提供帮助,因为我觉得这很荒谬,可能是为了提高安全性,但是对于框架而言,这没有任何意义,相反,使工作变得更轻松,更困难,压力更大。

luk*_*aus 5

Django runserver不适用于在生产环境中提供静态文件。它应限于开发和测试环境。

如果打算使用django的runserver来处理DEBUG = False的静态文件,请使用--insecure标志

出于安全考虑,切勿部署DEBUG = True的站点。


静态文件和媒体资产是两件事。

静态文件

静态文件是指您创建的图像和已安装的第三方应用程序随附的文件(例如django-cms)。这些文件包括图片,css和javascript文件等)。因此,您需要为此设置settings.STATIC_ROOT。

python manage.py collectstatic 从不同位置收集静态文件,并将它们全部放在一个文件夹中。

媒体文件

媒体文件是用户上传的内容(例如照片,文档等)。因此,您有一个settings.MEDIA_ROOT。 collecstatic不会对媒体文件做任何事情,一旦用户上传,它们就已经存在。

在生产中提供静态和媒体文件

诸如Django之类的框架不会涵盖自动生产服务器配置-不幸的是,您还必须学习其他内容。

周围有很多很好的指南,例如,指南可以帮助您开始在生产中提供媒体和静态文件。

关于服务器成本,我敢肯定,您可以找到一台主机给您免费信用,或者每月为某处服务器支付5美元的费用...尝试lowendbox


这是pythonanywhere中有关媒体和静态文件的指南:https ://help.pythonanywhere.com/pages/DjangoStaticFiles/