背景
在一个项目中,难免会有css文件,js文件以及图片,这些东西一般都是不会改动的,那么在项目中应该把他们放到项目中的何处才合适呢?
答案就是把它们都放到一个static目录下,因此,首先应该在项目下新建一个目录 static
在settings.py中配置 static 目录的路径
虽然已经创建好了static 目录,但是如何在项目中导入该目录下的文件呢?首先应该在settings.py 文件中配置它的路径
打开 settings.py 文件,在最下面添加下面几行代码
STATICFILES_DIRS = ( os.path.join(BASE_DIR, "static"), # BASE_DIR是项目的绝对路径,在连上static,就是static目录的路径了 )
思考:两个static各自代表什么
在settings.py中添加完上述的代码后会有这样两个static
上图中的两个static虽然名字一样,但是作用却千差万别
STATIC_URL = '/statics/' 相当于给static目录取了一个别名,以后再前端引入static目录里面
的文件时,直接用/static/jquery.js就可以了,也就是说这里引入文件时使用的static是个别名,
而与那个static目录没有关系
而 os.path.join 里面添加的static就是存放js,css等文件的目录名了。
所以,static目录的名字可以随便改,只要在settings.py中配置好它的正确路径就可以了,
而项目中引用的时候用的是它的别名,而不管这个目录的真实名称是什么
在项目中引入static目录下的文件
在配置好static目录的路径后,就可以在项目中导入它里面的文件了,那么如何导入呢?Django提供了两种方法
方式一
直接使用 static 名导入,注意,这里的static 是别名
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>index</title> </head> <body> <script src="/static/jquery.js"> <!-- 直接通过别名static查找 --> </script> </body> </html>
方式二(推荐使用)
通过 {% load staticfiles %} 跟 {% static %} 导入
{% load staticfiles %} <!-- 在此处先进行导入 --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>index</title> </head> <body> <script src="{% static 'jquery.js' %}"> <!-- 这样也可以找到 --> </script> </body> </html>
创建static目录的规则
注意:一般不会将static目录放在整个项目下,而是每个应用下放一个static文件,这样看起来更加整洁
那么,如果将static目录放在了应用下,settings.py中的路径也应该作出相应的修改
假设在blog应用下放一个static目录,将settings.py中的配置改一下
STATICFILES_DIRS = ( os.path.join(BASE_DIR, "blog", "static"), # 应该在这里将blog的目录也添加进去 )