我使用 Werkzeug 中间件制作。不漂亮,也不像使用 nginx 服务器那样高效,但是可以完成这项工作:
在 settings.py 上设置 STATIC_ROOT
# project/settings.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__)))
STATIC_ROOT = BASE_DIR+'/static-collected'
比告诉 Werkzeug 提供此文件夹中的文件
# project/wsgi.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
(...)
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
(...)
import os
from werkzeug.wsgi import SharedDataMiddleware
print 'Installing WSGI static files server middleware'
application = SharedDataMiddleware(application, {
'/static': os.path.join(BASE_DIR, 'static-collected'),
})
当 DEBUG=True 时,Django 提供文件。当 DEBUG=False 时,Werkzeug 从静态收集的文件夹中提供文件。您需要在使用 DEBUG=False 的服务器上运行 collectstatic 才能使其正常工作。
Obs:出于某种原因,Werkzeug 为未找到的文件给出 500,而不是 404。这很奇怪,但仍然有效。如果您知道原因,请发表评论。