尊重作者的劳动,转载请注明作者及原文地址 http://www.cnblogs.com/txwsqk/p/6517553.html
完全翻译自官方文档 https://docs.djangoproject.com/en/1.10/intro/tutorial06/
我们的web应用除了展示html外,还需要处理一些静态的文件,比如图片,css,js等,当你的应用很小时这很简单你把静态文件放到一个固定的地方就可以
然而当你的项目由多个应用组成时,django在使用静态文件时就要收集这些应用的各自的静态文件了,django.contrib.staticfiles这个模块就是做这个的
这个模块就是从你的所有应用里的静态文件路径里收集然后放到一个地方
你可以在你的应用里创建一个叫static的文件夹,把你的css文件放到这个目录polls/static/polls/style.css, 看起来跟template的目录结构完全一样
django的这个配置 STATICFILES_FINDERS定义了很多finder,而默认的finder叫AppDirectoriesFinder,它会根据INSTALLED_APPS里定义的app的static目录下查找静态文件
下面我们写一个css文件应用到html中
polls/static/polls/style.css
li a {
color: green;
}
polls/templates/polls/index.html
{% load static %} <link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}" />
{% static %}这个标签会为你的路径生成绝对路径
现在刷新下你的页面css已经生效了
上面这个方法只适合在开发阶段,也就是说你用runserver启动并且debug设置为true时才有效果,不适用正式产品 !!!
为什么呢? 因为django是python的应用框架,处理静态文件应该交给更专业的apache或nginx,所以请继续往下看
django的这节到这里已经讲完了,它让你自己去看其它内容,比如生产环境如何处理你的静态文件,我在这也大体说一下啊
每当你更新了你的静态文件你都应该运行这个命令
django-admin collectstatic
这个命令会从你的所有INSTALLED_APPS中的静态文件目录中收集静态文件到一个特定的目录,就是STATIC_ROOT定义的
然后你就配置你的web server(apache,nginx)定义一个location,这个location的路径就是STATIC_URL的路径,这样就串起来了
想了解更多 https://docs.djangoproject.com/en/1.10/howto/static-files/deployment/
本节完