在 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中settings.py中变量的全局引用

在 Django 的 settings.py 中导入模型

settings.py 中模板文件夹的 Django 路径

你真的可以用 Django 扩大规模吗……鉴于你只能使用一个数据库? (在 models.py 和 settings.py 中)

Django之配置文件(settings.py)