django上传的图片在制作期间无法正常工作

时间:2014-05-02 02:03:58

标签: python django

在开发过程中,我上传的图片正在显示,但在制作时却没有。

以下是代码:

#settings.py
STATIC_ROOT = '/home/eakdev/webapps/my_static'
MEDIA_ROOT = '/home/eakdev/webapps/my_static/media'
MEDIA_URL = '/media/'

#urls.py When I add this during development my images are showing correctly
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

#base.html
<img class="img-responsive" src="{{ project.preview.url }}" alt="">

在阅读了与此相关的一些问题之后,我认为其不起作用的原因是我的代码使用dev服务器来提供媒体文件,这只对开发有利。我有什么改变才能在生产中发挥作用?

2 个答案:

答案 0 :(得分:1)

在制作中提供媒体文件的首选方法是设置前端网络服务器或CDN以便为其提供服务。

例如,在nginx中,您在服务器配置中包含以下部分:

location /media/ {                        # Should match MEDIA_URL
    alias /path/to/mysite.com/media/;     # Should match MEDIA_ROOT
}

在Apache:

Alias /media/ /path/to/mysite.com/media/  # MEDIA_URL MEDIA_ROOT

<Directory /path/to/mysite.com/media>     # MEDIA_ROOT
    Require all granted
</Directory>

这些是最低限度的指令,你当然可以通过缓存,访问控制等方式做更多事情。

答案 1 :(得分:0)

我遇到了同样的问题。 在settings.py中,我评论了这些行:

#MEDIA_ROOT = '/home/prk/Documents/prakhar/mysite/media'
#MEDIA_URL = '/media/'

并添加以下行:

MEDIA_ROOT = os.path.join(BASE_DIR, "..", "www", "media")
MEDIA_URL = '/media/'

当您在localhost上运行服务器时,它会出错,但在生产中它会正常工作。

我的项目结构是: / Wrapper / mysite /(... ... manage.py mysite .. 。)

在包装目录中,我有一个名为www的文件夹,里面有一个名为media的文件夹。

希望这有帮助。