Nay*_*ish 17 django debugging static-files django-static
我正在创建一个Django项目.我刚刚尝试将该项目从调试中删除,DEBUG = False并且出于某种原因,我的所有静态文件都没有显示出来.它们的错误代码为500.我该如何解决这个问题?
一些settings.py:
DEBUG = True
TEMPLATE_DEBUG = DEBUG
...
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
# 'django.template.loaders.eggs.Loader',
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
Run Code Online (Sandbox Code Playgroud)
Tor*_*cht 36
静态文件应用程序未在DEBUG=False模式下自动提供静态媒体.来自django.contrib.staticfiles.urls:
# Only append if urlpatterns are empty
if settings.DEBUG and not urlpatterns:
urlpatterns += staticfiles_urlpatterns()
Run Code Online (Sandbox Code Playgroud)
您可以通过urlpatterns手动附加或使用服务器来提供静态文件来提供服务(就像在非DEBUG模式下运行Django项目时一样).
虽然有一件事我想知道你为什么得到500状态代码响应而不是404.在这种情况下有什么例外?
编辑
因此,如果您仍想通过staticfiles应用程序提供静态文件,请将以下内容添加到您的根URL conf(urls.py):
if settings.DEBUG is False: #if DEBUG is True it will be served automatically
urlpatterns += patterns('',
url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}),
)
Run Code Online (Sandbox Code Playgroud)
有些事情你需要记住:
STATIC_ROOT(manage.py collectstatic)中.有关更多信息,请参阅staticfiles应用程序文档.这是必要的,因为您在非调试模式下运行.from django.conf import settings了你的urls.py:)dud*_*ein 12
在Django 1.3中,如果您只是使用manage.py runserver进行测试,则可以添加选项"--insecure",如staticfiles文档中所述:
它似乎仍然向管理员发送电子邮件说没有模板,但它确实提供静态文件.
我不确定电子邮件问题是故意还是错误
| 归档时间: |
|
| 查看次数: |
14946 次 |
| 最近记录: |