django1.6的settings.py 中的static 配置和之前版本的还是有点出处的,研究了两天 ,终于达到了能用的地步.这里会结合django1.6 在apache2上的部署来说:
从官网上看出,django1.6的static 文件的存放位置有了改变,如下面我的项目tree:
oakcloud/ ├── db.sqlite3 ├── logs │ ├── django_db_backends_logfile.log │ ├── django.log │ └── django_request_logfile.log ├── manage.py ├── oak │ ├── admin.py │ ├── __init__.py │ ├── models.py │ ├── network.py │ ├── plugins │ │ ├── __init__.py │ │ └── network │ │ ├── __init__.py │ │ ├── methods.py │ │ └── models.py │ ├── static │ │ ├── __init__.py │ │ └── oak │ │ ├── css │ │ │ ├── bootstrap-cerulean.css │ ├── templates │ │ └── oak │ │ ├── index.html │ ├── urls.py │ └── views.py ├── oakcloud │ ├── __init__.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py └── static
根据官方文档上做提供的教材, 项目tree 是这样.
settings.py :文件:
import os BASE_DIR = os.path.dirname(os.path.dirname(__file__)) STATIC_URL = '/static/' STATIC_ROOT = "/var/www/example.com/static/" STATICFILES_DIRS = ( os.path.join(BASE_DIR, "static"), )
关于STATIC_URL,STATIC_ROOT,STATICFILES_DIRS 的含义,请参见
http://blog.sina.com.cn/s/blog_6d710ea90101drct.html
这里不再累述
在template中对静态文件的引用方式:
{% load staticfiles %} <link rel="stylesheet" type="text/css" href="{% static 'oak/css/bootstrap-cerulean.css' %}" />
执行:
$ python manage.py collectstatic
会将app里面的static文件copy到你指定的STATIC_ROOT里面:
前提:与app同级有static文件夹, 不然会报错.
我的apache2 配置:
WSGIScriptAlias / "/home/geiao/PycharmProjects/oakcloud/oakcloud/wsgi.py" <Directory "/home/geiao/PycharmProjects/oakcloud/oakcloud"> Order deny,allow Allow from all </Directory> Alias /static /var/www/example.com/static <Directory /var/www/example.com/static> Order deny,allow Allow from all </Directory>