0

我正在尝试在部署模式下运行我的 django 站点DEBUG=False。事实上,当我这样做时,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
4

2 回答 2

2

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

有关更多信息,请查看此链接

于 2016-12-28T11:18:50.123 回答
0

根据您的生产设置,您可能必须设置 Apache 或 nginx 配置文件以指向静态内容。例如,在 nginx 中,您可以添加一个“location /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 / {
        ...
    }
}
于 2018-07-24T18:50:24.457 回答