在 django settings.py 中更新 media_root 时遇到问题
Posted
技术标签:
【中文标题】在 django settings.py 中更新 media_root 时遇到问题【英文标题】:trouble updating media_root in django settings.py 【发布时间】:2012-02-08 04:04:16 【问题描述】:我正在尝试设置 MEDIA_ROOT,但是当我在我的 settings.py 中设置它时,它似乎无法被识别。例如我的 settings.py 看起来像:
...
MEDIA_ROOT = '/static/files/'
...
在一个模板中(为了测试这个变化)——我试过了:
Media root: MEDIA_ROOT
static url: STATIC_URL
静态 url 显示正常,我可以更新和更改它,这些更改会反映在测试模板中。但是媒体根始终是一个空字符串。开始使用 MEDIA_ROOT 是否需要一些额外的配置 - 如果是这样,有人可以指出我的文档吗?
【问题讨论】:
你使用的是什么版本的 Django?这可能是相关的。 实际上我认为 MEDIA_ROOT 和 STATIC_ROOT 在模板中可能不可用(?)...MEDIA_URL 和 STATIC_URL 似乎显示显示/并显示更新但两个 _ROOT 变量没有显示...我应该重新发布这个问题,因为我的问题是其他问题 【参考方案1】:默认情况下,您应该可以使用两个上下文变量(只要您在渲染模板时使用 RequestContext 实例:
MEDIA_URL
-- 由django.core.context_processors.media
提供
STATIC_URL
-- 由django.code.context_processors.static
提供
这两个上下文处理器都在默认列表中,您可以在 https://docs.djangoproject.com/en/1.3/ref/settings/#template-context-processors 看到
MEDIA_ROOT
应该是文件系统路径,用于在磁盘上加载和保存媒体。不应该有任何理由在模板中使用它。如果你真的需要访问它,编写你自己的上下文处理器来提供它很简单。
媒体处理器的文档,顺便说一句,位于https://docs.djangoproject.com/en/1.3/ref/templates/api/#django-core-context-processors-media
【讨论】:
以上是关于在 django settings.py 中更新 media_root 时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章
如何访问 django settings.py 中的模型或视图属性?
你真的可以用 Django 扩大规模吗……鉴于你只能使用一个数据库? (在 models.py 和 settings.py 中)