我正在使用DJango 1.8和python 3.4.3,我一直在调试模式下运行我的应用程序,并找到了在MEDIA_ROOT上配置的目录中显示图像的方法,这是我的第一个问题,我发现的解决方案:How to upload and show images in DJango。但是阅读文档我发现该解决方案不适合所服务的应用程序,因此,如果我停止使用“Debug = True”,则不会显示图像,我必须使用此链接上公开的选项之一:{ {3}}但我没有钱支付另一台服务器,我只能在pythonanywhere支付我的托管,并且对于图像使用相同服务器的选项,我不知道如何自动化{{ 1}}并且在用户上传新图像时也不知道如何触发它。
我使用过ASP.NET和PHP5,但我没有遇到任何问题,所以,我有两个问题:
我希望你能帮助我,因为我觉得这很荒谬,可能是为了更好的安全性,但它对框架没有意义,而不是让工作变得更容易使它变得更加困难和紧张。
答案 0 :(得分:4)
Django runserver不用于在生产环境中提供静态文件。它应该仅限于开发和测试环境。
如果您打算使用django的runserver来提供DEBUG = False的静态文件,请使用--insecure flag。
由于安全隐患,您不应该部署DEBUG = True的站点。
静态文件和媒体资产有两种不同的东西。
静态文件就像您创建的图像和已安装的第三方应用程序附带的文件(例如django-cms)。这些文件包括图像,CSS和JavaScript文件等。所以你需要有一个settings.STATIC_ROOT。
python manage.py collectstatic
从不同位置收集静态文件,并将它们全部放在一个文件夹中。
媒体文件是用户上传的内容(例如照片,文档等)。所以你有一个settings.MEDIA_ROOT。 collecstatic
对媒体文件不做任何操作,只要用户上传媒体文件就会存在。
像Django这样的框架不会涵盖自动生产服务器配置 - 不幸的是,这是你不得不学习的其他内容。
有许多好的指南,例如this one可帮助您开始在生产中提供媒体和静态文件。
关于服务器费用,我确信您可以找到主机为您提供一些免费信用,或者在某处为服务器每月支付5美元...尝试lowendbox
以下是pythonanywhere关于媒体和静态文件的指南:https://help.pythonanywhere.com/pages/DjangoStaticFiles/
答案 1 :(得分:1)
1)在urls.py中添加:
(r'^media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
2)在DEBUG打开的情况下,永远不要将网站部署到生产环境中,DEBUG = True是一个安全问题,