我最近从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>
答案 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