静态文件指的是js css 还有图片这些,配置方法如下

1. 在设置文件(settings.py)中,installed_apps中添加 ​​django.contrib.staticfiles​

    然后设置static_url  





1




​STATIC_URL ​​​​=​​ ​​'/static/'​



2. 在模板中的使用方式如下  





1


2




​{​​​​%​​ ​​load staticfiles ​​​​%​​​​}​


​<img src​​​​=​​​​"{% static "​​​​my_app​​​​/​​​​myexample.jpg​​​​" %}"​​ ​​alt​​​​=​​​​"My image"​​​​/​​​​>​



这种方式提供的是一种相对路径,当你将环境切换到CDN的时候会方便很多

当然也可以用简单一些的方法---直接提供一个静态文件的url,不过在CDN中就要修改才可以使用了





1




​/​​​​static​​​​/​​​​my_app​​​​/​​​​myexample.jpg​



3. 把你的文件都放在一个文件夹下,比如





1




​my_app​​​​/​​​​static​​​​/​​​​my_app​​​​/​​​​myimage.jpg​



  

注:当debug设置True的时候上面的方法可以,但是False的时候会提示not found的错误 

 

当debug设置为Fales的时候,设置方法如下(增加静态文件url,使用 ​​django.contrib.staticfiles.views.serve()来寻找静态文件​​):





1


2


3


4


5


6




​from​​ ​​django.conf ​​​​import​​ ​​settings​


​from​​ ​​django.conf.urls.static ​​​​import​​ ​​static​


 


​urlpatterns ​​​​=​​ ​​[​


​# ... the rest of your URLconf goes here ...​


​] ​​​​+​​ ​​static(settings.STATIC_URL, document_root​​​​=​​​​settings.STATIC_ROOT)​



注:也不推荐实际环境中用  

 

当你有多个静态文件目录的时候可以使用下面的方式,设置STATICFILES_DIRS: 





1


2


3


4




​STATICFILES_DIRS ​​​​=​​ ​​[​


​os.path.join(BASE_DIR, ​​​​"static"​​​​),​


​'/var/www/static/'​​​​,​


​]​



 

注:django寻找静态文件默认找到地一个就会返回,不再进行后续查找,所以要注意安排顺序及目录 

 

 部署的步骤:

1. 设置STATIC_ROOT:





1




​STATIC_ROOT ​​​​=​​ ​​"/var/www/example.com/static/"​



2. 执行collectstatic命令:





1




​$ python manage.py collectstatic​



这会把静态文件拷贝到你设置的static_root目录下(这样可以更方便的和nignx集成,权限管理也更方便)


做有积累的事~~