配置static目录


背景

在一个项目中,难免会有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的目录也添加进去
)

  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM