这是一篇很长的文章,基本上总结了我从Django中学到的所有知识,以便使静态文件正常工作(花了我一段时间才了解所有不同部分如何组合在一起)。
为了在开发服务器(以及后来的真实服务器)中提供静态映像,您将必须做一些事情(特别注意第三和第四步):
设置MEDIA_ROOT
MEDIA_ROOT是一个常量,它告诉Django文件的 物理
路径(在您的文件系统上)。使用您的示例,就像您编写的一样,需要将MEDIA_ROOT设置为’C:/ siteURL / galleries
/’。MEDIA_ROOT将在以下步骤之一中使用,这就是我们设置它的原因。
设置MEDIA_URL
MEDIA_URL是图像所在的“ URL”。换句话说,只要你想获得的图像,链接,寻找 与启动 MEDIA_URL。通常,这 不是 以“
http”开头,因为是从您自己的服务器提供服务(我的MEDIA_URL通常设置为“ / site_media
/”,这意味着从根域开始,然后转到site_media等)。
使用MEDIA_URL
MEDIA_URL不能正常运行,您实际上必须使用它。例如,当您编写获取文件的HTML时,它需要如下所示:
<li><img src="{{MEDIA_URL}}/160.jpg" /></li>看看我如何告诉模板使用MEDIA_URL前缀吗?最终转化为
'http://some-good-URL/galleries/160.jpg'。
请注意,为了能够在模板中实际使用MEDIA_URL
,如果我没有记错的话,您将必须将该行添加
'django.core.context_processors.media'到
TEMPLATE_CONTEXT_PROCESSORSsettings.py文件中的设置中。
使您的开发服务器提供静态文件
在实际环境中,您将配置地址为“
static_media”之类的文件,而无需通过Django即可提供。但是在开发环境中,您也希望从Django对其进行服务器处理,因此您应该将此通用行添加到urls.py文件的末尾:
if settings.DEBUG:# Serve static files in debug.urlpatterns += patterns('', (r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes' : True}),)请注意,使用url“ site_media /
*”(实际上是我的MEDIA_URL)如何处理并从我的MEDIA_ROOT文件夹(即MEDIA_ROOT设置起作用的位置)提供该内容。
最后说明
让我感到困惑的是,这里的很多事情都是为了方便。例如,仅在您的调试网址格式中使用MEDIA_ROOT,以告知Django从何处加载。并且MEDIA_URL只是为了鼓励您不要在所有HTML文件中放入绝对URL,因为当您决定将文件移动到其他服务器时,必须手动更改所有文件(而不是仅更改MEDIA_URL不变)。
当然,这一切都不是必需的:您可以使用自己的文件夹对调试URL模式进行硬编码,确保静态文件确实是从URL服务器存储的(通过在浏览器中访问它),然后进行手工编码而
无需 在HTML文件中使用MEDIA_URL设置,只是为了确保一切正常。



