您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

无法弄清楚在django开发环境中提供静态图像

无法弄清楚在django开发环境中提供静态图像

这是一篇很长的文章,基本上总结了我从Django中学到的所有知识,以便使静态文件正常工作(花了我一段时间才了解所有不同部分如何组合在一起)。

为了在开发服务器(以及后来的真实服务器)中提供静态映像,您将必须做一些事情(特别注意第三和第四步):

MEDIA_ROOT是一个常量,它告诉Django文件的 路径(在您的文件系统上)。使用您的示例,就像您编写的一样,需要将MEDIA_ROOT设置为’C:/ siteURL / galleries /’。MEDIA_ROOT将在以下步骤之一中使用,这就是我们设置它的原因。

MEDIA_URL是图像所在的“ URL”。换句话说,只要你想获得的图像,链接,寻找 与启动 MEDIA_URL。通常,这 以“ http”开头,因为是从您自己的服务器提供服务(我的MEDIA_URL通常设置为“ / site_media /”,这意味着从根域开始,然后转到site_media等)。

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设置,只是为了确保一切正常。

Go 2022/1/1 18:40:09 有351人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶