我尝试使用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
答案 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 / {
...
}
}