以前过很多相关设置的博客,但还是出错,最后把自己经过多次尝试的写出来,供大家参考一下。
本篇文章采用的是Django1.6.11,其他高版本有可能不一样,这些配置只适合于开发模式下,在生产中请采用web服务器管理。
首先配置setting文件,主要设置如下:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/').replace('\\', '/')
#注意STATICFILES_DIRS中的目录不能和STATIC_ROOT一样,这里可以单独设个文件夹,部署的时候运行python mange.py collectstatic就会自动收集过去
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'common_static'),
# os.path.join(os.path.join(BASE_DIR, 'static'), 'bootstrap'),
)
MEDIA_ROOT = os.path.normpath(os.path.join(BASE_DIR, 'media/').replace('\\', '/'))
MEDIA_URL = '/media/'
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, 'templates'),
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
在项目配置下的url.py中作如下设置:
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
...中间省略...
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
在模板中使用的时候可以直接加路径,类似这样:
<script src ="/static/jquery/jquery-2.1.4.min.js"></script>
也可以这样使用
<script src ="{{ STATIC_URL }}jquery/jquery-2.1.4.min.js"></script>
<img src="{{ MEDIA_URL }}img/xx.jpg">
但要注意的是第二种方法使用,需要在setting中进行额外设置:
TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
#主要添加如下两个,其他的除了默认生成的,可以不添加
'django.core.context_processors.media',
'django.core.context_processors.static',
'django.core.context_processors.tz',
'django.core.context_processors.request',
'django.contrib.messages.context_processors.messages',
)
至此一个简单的静态文件配置就完成了,你可以在浏览器中测试是否可用,我的目录结构如下:
├─apps
│ ├─classfiy
│ ├─home
│ ├─modeldefault
│ ├─semail
│ ├─share
│ ├─upload
│ └─uwsgitest
├─common_static
│ ├─bootstrap
│ │ ├─css
│ │ ├─fonts
│ │ └─js
│ └─jquery
├─media
├─mytest
├─static
├─templates
│ ├─classfiy
│ ├─home
│ ├─semail
│ ├─share
│ ├─upload
│ └─uwsgitest
├─utils