清空{{MEDIA_URL}}标记,由Django 1.7.2过渡到1.8

时间:2015-04-07 02:45:15

标签: python django

我最近从Django 1.7.2升级到1.8并遇到了一些问题,特别是在渲染{{MEDIA_URL}}标签时,它显示为空。我一直在寻找可能导致这个问题的几个小时,但我不知所措。任何帮助将不胜感激

在我的urls.py中,我添加了

+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

settings.py

STATIC_ROOT = os.path.join(BASE_DIR, 'tala_app/static/')
STATIC_URL = '/static/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'tala_app/media/')
MEDIA_URL = '/media/'

我的静态文件似乎工作正常。

在我的views.py中我返回:

return render(request, 'browse.html', context)

并尝试使用:

return render_to_response('test.html', context, 
    context_instance = RequestContext(request))

其中context是一个上下文字典,但到目前为止还没有成功。

如果我将链接设置为/ media / {{path-to-img}}而不是{{MEDIA_URL}} {{path-to-img}},那么它可以正常工作。

我觉得好像我错过了一些非常明显但却无法弄明白的东西

由于

PS:如果从1.7.2过渡到1.8还有其他重要的事情,请告诉我(我已经阅读了他们网站上的向后兼容性变化,或者至少尽可能多地阅读)< / p>

1 个答案:

答案 0 :(得分:4)

Django 1.8的升级引入了模板的新设置。而不是使用:

TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.request",
"django.contrib.messages.context_processors.messages",
"main_app.context_processor.NavbarContext",)

您应该使用:

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.template.context_processors.i18n',
            'django.template.context_processors.media',
            'django.template.context_processors.static',
            'django.template.context_processors.tz',
            'django.contrib.messages.context_processors.messages',
        ],
    },
},]

Django文档说:

  

已弃用所有与模板相关的现有设置

更新您的模板设置,你会没事的。 有关详细信息,请参阅:Upgrading templates to Django 1.8