2010-08-03 68 views
0

所以我一直在寻找上下一个很好的解决方案来显示图像,音频,媒体一般使用Django:的libjpeg PIL photologue Django的

从我发现有以下解决方案:

1. Photolue:

不能使它工作。 它需要PIL和libjepg。

我试图安装两者,但遇到了不同的构建问题。在计算器

有人向我推荐了这个链接:

http://appelfreelance.com/2010/06/libjpeg-pil-snow-leopard-python2-6-_jpeg_resync_to_restart/

这是一个伟大的教程,并与PIL删除并重新安装(这是我必须做的,我猜)的交易。 而随着本教程的地方我必须这样做:

须藤室射频构建

而且我不觉得有足够的信心来运行sudo的rm命令。

此外,我认为必须有一个更简单的方法来实现这一点,因为每个博客都需要显示媒体。

2. Django的说:

让阿帕奇做显示屏,并使用此:

(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', 
     {'document_root': '/pathtomedia/', 'show_indexes': True}), 

发展而不是用于生产。

那么大家用什么来生产呢?

3.其他:

我设法通过显示os.listdir,urllist和模板图片:

allimg= os.listdir("/pathtomyimages/") 
urllist = ['/site_media/Imagedir/%s' % url for url in allimg] 
return render_to_response('picture_display.html', 
     {'allimg': allimg}) 

但是,这也似乎不是很乐观,因为我要显示的图像,音频,来自多个站点上的一个目录的媒体。

我听说paginator可能是解决方案。

所以现在我的问题:

什么是开发和生产,以显示在Django媒体最好的,最简单和可靠的解决方案?

你在用什么?

请帮我一把!

谢谢你的时间。

回答

0

django-photologue是一款用于管理项目图像和图像集合的应用程序,但与静态媒体服务无直接关系。

由于“最好”,“最简单”和“健壮”都是相当主观的术语,这取决于您的具体需求,我建议您首先了解为什么从Django服务您的媒体文件并不常见。简短的通用答案是Django必须加载到处理请求的每个Web服务器进程中,这将使用不重要的内存量。在提供媒体文件时,您(通常)只是从磁盘返回文件。由于不需要应用程序逻辑,因此在进程中运行Django所需的内存和Django将请求路径映射回视图,加载文件并将其转储到其中的额外代码处理都会产生不必要的开销响应。 Web服务器(Apache,Nginx等)已经非常擅长从磁盘返回文件。这就是为什么建议您让Web服务器处理静态媒体文件的原因。该请求不需要交给WSGI中间件或Django。

有很多选项可用,但有一些可能是常见的解决方案。例如,如果您已决定将Apache作为您的Web服务器,则需要对其进行配置,以便您的媒体路径请求由Apache直接处理,并将所有其他请求交给Django。 Apache + mod_wsgi是一个相当常见的选择AFAICT。通过阅读此仔细:

http://docs.djangoproject.com/en/1.2/howto/deployment/modwsgi/#howto-deployment-modwsgi

这不是绝对必要配置单独的Web服务器的文件建议。您可以在开始使用Django和媒体时使用相同的Apache实例。

+0

非常有趣!非常感谢这个答案。所以我不得不改进我的问题: 1.是否有一个很好的应用程序来管理你知道的静态文件。 2.所以media_url和media_root的网站结构保持不变?我可以开发我的项目,当我部署时,我只需要使用mod_wsgi配置apache,我的网站将工作得很好? 再次感谢 – MacPython 2010-08-04 07:13:10

0

该教程其实是我的:)

sudo RM -rf build,这一切确实是真正强制删除任何以前的版本,这基本上意味着它清除任何与该版本。

希望这可以帮助