Django:collectstatic作品,但没有找到正确的静态文件夹

时间:2016-12-28 11:02:05

标签: python django collectstatic

我尝试使用DEBUG=False在部署模式下运行我的django网站。事实上,当我执行python manage.py collectstatic时,它会将所有静态文件收集到我的文件夹/mysite/static中。但是当我加载我的主页时,我的静态文件不会加载Not Found

我的Django版本 1.10.4 这是我的STATIC ROOT定义和urls文件夹:

settings.py 中:

STATIC_URL = '/static/'

STATIC_ROOT = os.path.join(BASE_DIR, "static") (i tried also just only 'static')

MEDIA_ROOT = BASE_DIR + '/mysite/media'

MEDIA_URL = '/media/'

我的 urls.py

urlpatterns = [   
    url(r'', include('mysite.urls')),
]

urlpatterns += staticfiles_urlpatterns()

我注意到我假设我的collectstatic文件夹不是考虑app文件夹中的静态文件。

python manage.py findstatic mysite/js/javascript.js

Found 'app/js/javascript.js' here:
/home/user/mysite/app/static/app/js/javascript.js

好吧,一旦那个DEBUG=False它应该给出类似的东西:

 /home/user/mysite/static/app/js/javascript.js

2 个答案:

答案 0 :(得分:2)

在生产服务器上,您的nginx或apache应该提供静态文件。当Debug = False时,django停止提供静态文件。请分享你的nginx设置,我可以帮助你...

有关详情,请查看this link

答案 1 :(得分:0)

取决于生产设置,您可能必须设置Apache或nginx配置文件以指向静态内容。例如,在nginx中,您可以添加“位置/ static / {...}”条目,例如。像这样的东西:

server {
    server_name mysite.com;
    listen 443;
    listen [::]:443;

    ssl on;
    ssl_certificate /etc/nginx/ssl/cert.crt;
    ssl_certificate_key /etc/nginx/ssl/private.key;
    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        allow all;
        alias /your/base/dir/here/.../mysite/static/;
    }
    location / {
        ...
    }
}