django的settings中几个static设置项的关系


django的settings中包含三个static相关设置项:
STATIC_ROOT
STATIC_URL

STATICFILES_DIRS

STATIC_URL 好理解,就是映射到静态文件的url,一般为/static/
STATICFILES_DIRS 是个列表,放各个app的static目录及公共的static目录

STATIC_ROOT 是总的static目录,可以使用命令自动收集static文件

更加详细的解释:

STATIC_ROOT:运行manage.py collectstatic后静态文件将复制到的目录。注意:不要把你项目的静态文件放到这个目录。这个目录只有在运行collectstatic时才会用到。我最开始想当然的以为这个目录和MEDIA_ROOT的作用是相同的,致使在开发环境下一直无法找到静态文件。

STATIC_URL:设置的static file的起始url,这个只可以在template里面引用到。这个参数和MEDIA_URL的含义差不多。

STATICFILES_DIRS:除了各个app的static目录以外还需要管理的静态文件位置,比如项目公共的静态文件差不多。和TEMPLATE_DIRS的含义差不多。

各个APP下static/目录下的静态文件django的开发服务器会自动找到,这点和以前APP下的templates目录差不多。


假设有个工程djangodemo,有两个app为demo1跟demo2

django处理static的方法是把各个app各自的static合并到一处

比如
djangodemo/djangodemo/static 放置公共静态文件
djangodemo/demo1/static 放置该app自己的静态文件
djangodemo/demo2/static 放置该app自己的静态文件
可以这么设置:
1
2
3
4
5
6
7
8
9
STATIC_ROOT='/www/djangodemo/djangodemo/static '
 
STATIC_URL='/static/'
 
STATICFILES_DIRS=(
    'djangodemo/static',
    'demo1/static/',
    'demo2/static/',
)
使用命令
1
manage.py collectstatic
就会自动把所有静态文件全部复制到STATIC_ROOT中
如果开启了admin,这一步是很必要的,不然部署到生产环境的时候会找不到样式文件

阅读更多
换一批

没有更多推荐了,返回首页