urlpatterns = patterns('',
# Examples:
url(r'^$', 'core.views.homepage', name='homepage'),
url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}),
)
那是我的urls.py
如果我禁用DEBUG,静态文件可以正常工作,如果我重新打开它,则无效。
我的部分设置
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'
# URL prefix for admin static files -- CSS, JavaScript and images.
# Make sure to use a trailing slash.
# Examples: "http://foo.com/static/admin/", "/static/admin/".
ADMIN_MEDIA_PREFIX = '/static/admin/'
# Additional locations of static files
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
)
# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
对我来说真的很奇怪,有人可以帮忙吗?
答案 0 :(得分:21)
不,STATIC_ROOT
是不是由Django提供服务。在生产(调试关闭)中,您的Web服务器应该直接为此目录提供服务。在开发(debug on)中,不管怎样,你不应该有这个目录或任何东西。
让我再说一遍强调。您从不应该直接保存STATIC_ROOT
中的任何资产。此目录仅用于collectstatic
管理命令的输出。项目中的所有资产都应该保存在它所属的特定应用程序的static
目录中。
现在,当然,您通常会拥有与单个应用程序无直接关系的资产,而是整个项目的整个项目。对于此方案,您在项目中创建单独的目录,并将所有公共资源放在那里。然后,将此目录添加到STATICFILES_DIRS
设置。
在开发中,Django 将提供该目录中的任何内容,而在生产中,collectstatic
管理命令会将该目录中的资源提取到STATIC_ROOT
。