1

当我DEBUG=False在 django 1.5 中的设置文件中进行设置时,我不再有权访问STATIC_URLdjango 模板中的 TEMPLATE_CONTEXT_PROCESSORS 应该加载的或任何其他变量。奇怪的是,当DEBUG=True. 对于它的价值,我肯定有'django.core.context_processors.static'我的TEMPLATE_CONTEXT_PROCESSORS所以这不是问题。我还在模板上下文中检查了其他一些变量,但似乎没有其他变量。MEDIA_URL? 不。request? 不。请参阅 github 上的此示例(已使用解决方案进行了更新),但这些是在以下情况下正确工作DEBUG=True并在以下情况下引发 500 错误的重要部分DEBUG=False

# settings.py
from django.conf.global_settings import *
# ...
TEMPLATE_CONTEXT_PROCESSORS += (
    'django.core.context_processors.request',
)
# believe it or not, 'django.core.context_processors.static' is in there
print TEMPLATE_CONTEXT_PROCESSORS 

# views.py
from django.template import RequestContext
from django.shortcuts import render_to_response
def wtf(request):
    return render_to_response(
        "wtf.html", {}, 
        context_instance=RequestContext(request)
    )

当您关闭调试模式时,django 1.5 中会发生什么特别的事情吗?任何修复和/或调试问题的建议将不胜感激!

4

2 回答 2

0

看起来 Django 1.2 和 1.3 之间发生了变化。

如果您希望模板在调试模式之外可用,您现在必须包含django.core.context_processors.static在您的文件中。TEMPLATE_CONTEXT_PROCESSORSSTATIC_URL

您还需要确保RequestContext在呈现模板时使用实例。

于 2013-04-18T13:58:32.243 回答
0

这可以通过编辑 settings.py 中的ALLOWED_HOSTS变量来解决。有关更多详细信息,请参阅此答案

例如,要使其在 localhost 上工作,请设置ALLOWED_HOSTS = ['localhost'].

于 2013-04-19T13:37:03.137 回答