django STATIC_URL STATIC_ROOT STATICFILES_DIRS的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django STATIC_URL STATIC_ROOT STATICFILES_DIRS的区别相关的知识,希望对你有一定的参考价值。

# 对外提供WEB访问时的URL地址 STATIC_URL = '/static/' # 用来将所有STATICFILES_DIRS中所有文件夹中的文件以及各app的static中的文件都复制过来后统一存放的目录,为了方便部署 STATIC_ROOT = os.path.join(BASE_DIR, 'static') # 所有存放有静态文件的文件夹 STATICFILES_DIRS = (     '/usr/local/lib/python3.4/dist-packages/django/contrib/admin/static', )

Django 关闭DEBUG模式后,就相当于是生产环境了。Django官网上指出如果Django框架一旦作为生产环境,它的静态文件访问接口就不应该从Django框架中走了,必须在Django框架前端部署nginx或者其他web服务器来提供静态访问入口,首推nginx 。

nginx配置如下:

server {
    listen         80;
    server_name    127.0.0.1
    charset UTF-8;
    access_log      /var/log/nginx/django_pro01_access.log;
    error_log       /var/log/nginx/django_pro01_error.log;
    client_max_body_size 75M;
    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8000;
        uwsgi_read_timeout 2;
    }
    location /static {  #这里做了访问静态目录不走uwsgi
        expires 30d;
        autoindex on;
        add_header Cache-Control private;
        alias /usr/share/nginx/django_pro01/static/;
     }
 }

在nginx中要单独做访问/static/目录的路由。


所有静态文件都应该从“/usr/share/nginx/django_pro01/static/”这个目录中(也就是上面定义的STATIC_ROOT)获取。

运行 python manage.py collectstatic 

这个命令的执行目的,就是将在开发模式中定义的静态目录,统一拿到STATIC_ROOT目录下,对外提供“/static”(STATIC_URL)为访问URL:

  1.首先从Django的扩展包中,将admin管理后台的jss 和css等静态文件拷贝到配置文件中的STATIC_ROOT目录下。

  2.然后将STATICFILES_DIRS 列表中所有目录下的内容也拷贝到STATIC_ROOT目录下


以上是关于django STATIC_URL STATIC_ROOT STATICFILES_DIRS的区别的主要内容,如果未能解决你的问题,请参考以下文章

使用 django 将 STATIC_URL 传递给文件 javascript

如何使 STATIC_URL 在外部 JS 文件(Django)中工作

为啥更改我的“STATIC_URL”设置会改变我的 Django 应用程序是不是正常工作?

Django 404 上的静态文件,同时设置了 static_root 和 static_url

django STATIC_URL STATIC_ROOT STATICFILES_DIRS的区别

django