从官网上看出,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>