关于Django静态文件路径设置规则的精炼总结

01-当Django处于DEBUG模式时,其与静态资源有关的三句设置语句才有作用,当没有处于DEBUG模式时,与静态资源有关的三句设置语句没有作用。与静态资源有关的三句设置语句如下:

STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static_list')]  # 注意这是一个列表,即可以有多个目录的路径
STATIC_ROOT = os.path.join(BASE_DIR, 'static_root')
STATIC_URL = '/static-url/'

02-当Django没有处于Debug模式时,静态文件该由代理服务器(比如Nginx)直接提供,通常的做法是在Nginx中配置两个匹配静态文件的location块,比如下面的语句:

    # 匹配图片类静态文件
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
    {
        expires 30d;
        error_log off;
        access_log /dev/null;
    }
    # 匹配js,css等别的静态文件
    location ~ .*\.(js|css)?$
    {
        expires 12h;
        error_log off;
        access_log /dev/null;
    }

03-当Django处于Debug模式时,当Django开启web服务后,如果STATIC_URL = '/static-url/'
则访问URL路径:http://hostname:端口号/static-url/就相当于去访问Django目录中的静态文件。
那么由Django的哪个目录提供静态文件呢,此时又分为两种情况。

第一种情况:没有执行命令python manage.py collectstatic的情况,此时遍历目录的顺序请参考我之前写的博文https://blog.csdn.net/wenhao_ir/article/details/134493471【搜索“没有执行命令python manage.py collectstatic的情况”】

第二种情况:执行命令python manage.py collectstatic的情况,此时遍历目录的顺序也请参考我之前写的博文https://blog.csdn.net/wenhao_ir/article/details/134493471【搜索“当运行 python manage.py collectstatic 命令时”】

你可能感兴趣的:(Django,django)