我正在使用现有(以前功能齐全的)Django网站。我们最近从Django 1.8.13升级到1.10,我们的WSGI是Gunicorn。从我的开发机器托管时它可以正常工作,但是在部署时,所有静态资源(在管理员和主站点上)都会产生404消息Timestamp
我们的Directory indexes are not allowed here.
包含以下内容:
settings.py
目录结构如下所示:
INSTALLED_APPS = (
...
'django.contrib.staticfiles',
...
)
DEBUG = True
STATIC_URL = '/static/'
PROJECT_DIR = os.path.dirname(os.path.dirname(__file__))
STATICFILES_DIRS = (
os.path.join(PROJECT_DIR, 'static'),
)
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static_resources')
答案 0 :(得分:0)
尝试将os.path.join(PROJECT_DIR,' ../ static')更改为os.path.join(PROJECT_DIR,' static')和STATIC_ROOT = os.path .join(PROJECT_DIR,' ../ static_resources')到STATIC_ROOT = os.path.join(PROJECT_DIR,' static_resources')。它会解决你的问题。
答案 1 :(得分:0)
答案非常微妙。当我将Django升级到1.9并运行服务器时,它发出了以下警告:
?: (urls.W001) Your URL pattern '^static/(?P<path>.*)$' uses include with a regex ending with a '$'. Remove the dollar from the regex to avoid problems including URLs.
在urls.py
中,我的urlpatterns
列表包含:
url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.STATIC_ROOT,
}),
我把它改为:
url(r'^static/(?P<path>.*)/', 'django.views.static.serve', {
'document_root': settings.STATIC_ROOT,
}),
这消除了警告但导致静态资源停止加载。 它必须是:
url(r'^static/(?P<path>.*)', 'django.views.static.serve', {
'document_root': settings.STATIC_ROOT,
}),
为什么这对我的开发机器(Macbook)以及团队开发机器(Windows笔记本电脑)上的另一台机器起作用仍然是一个谜,但在我们的Linux服务器上却没有。但是,它现在有效,所以我试图弄清楚它。