2015-04-07 26 views
3

我最近從Django 1.7.2升級到1.8並遇到了一些問題,特別是在呈現{{MEDIA_URL}}標記時,它顯示起來爲空。我一直在尋找可能導致這個問題的幾個小時,但是我很茫然。任何幫助,將不勝感激空的{{MEDIA_URL}}標記,由從Django 1.7.2轉換到1.8引起的

在我的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)) 

,其中上下文是語境詞典,但都沒有成功爲止。

如果我將鏈接設置爲/ media/{{path-to-img}}而不是{{MEDIA_URL}} {{path-to-img}},那麼它可以正常工作。

我覺得如果我失去了一些東西真的很明顯,但不能找出

感謝

PS:如果有別的是從轉變從1.7.2到1.8重要,請讓我知道(我已經閱讀了他們網站上的落後不兼容性變化,或者至少儘可能多地瞭解)

回答

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