在用Django 作项目时,若是在本地调试的状况下,咱们会开启 settings.py 中的 DEBUG = True
同时咱们还会作以下操做:
1. 设置 STATIC_ROOT = os.path.join(os.path.dirname(__file__),'static')
2.设置 STATIC_URL = '/static/'
以上两步我想通常都会提到,但即便你作了这样的配置,当你在浏览器中浏览你的CSS或JS 文件,仍然是 404 错误,说明路径错误,根本找不到。
好比个人工程以下:
你若是输入http://localhost:8000/static/js/myjs.js确定出错。通过屡次试验,按以下方法能够解决
配置STATICFILES_DIRS
好比个人工程配置以下:javascript
STATICFILES_DIRS = (
('css',os.path.join(STATIC_ROOT,'css').replace('\\','/') ),
('js',os.path.join(STATIC_ROOT,'js').replace('\\','/') ),
('images',os.path.join(STATIC_ROOT,'images').replace('\\','/') ),
('upload',os.path.join(STATIC_ROOT,'upload').replace('\\','/') ),
)
css
注意前面的css,js,images,upload 必定要与你的目录结构名称保持一致。
配置好了你再次启动django ,而后访问:http://localhost:8000/static/js/myjs.js就看到结果了,说明找到路径,一样css,image图片均可以找到了.
早模板中的使用java
<script type="text/javascript" src="/static/js/myjs.js"></script>
python
采用这种方式就能够了。css与图片一样的道理。
注意在上诉状况下,只能在开启 DEBUG=True 时才能生效,在咱们开发的时候很方便。若是设置DEBUG=False 将不会生效。这种状况时,要采用生产环境的 配置。用web application server 来处理这些静态的图片,css,以及js文件。
生产环境的处理
1.设置 DEBUG=False
2.能够不用配置STATICFILES_DIRS
3.配置web application server ,好比我用 nginx:nginx
location ^~ /static {
root /opt/www/MyNet;
}
web
这样,就天然找到static路径,不用 django去处理了。若是想配置生产环境的,能够参考我写的另外一篇文章:生产环境上配置django
备注:我看到有的文章在urls.py 中进行配置,确实能够,但我以为这不是个好方法。好比:django
MEDIA_ROOT=os.path.join(os.path.dirname(__file__),'media').replace('\\','/') #若是是*nix系统,不须要replace函数
MEDIA_URL='/media/' #末尾必定要加上/
ADMIN_MEDIA_PREFIX = '/media/admin/' #填啥均可以,就是不能跟MEDIA_URL同样
浏览器
而后app
(r'^media/(?P.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT})
函数