2.8.5Django --4.4 静态文件之static

Django目录:https://blog.****.net/qq_41106844/article/details/105554082

 

什么是静态文件

.css文件,.js文件,各类图片文件。

 

Django为什么要有static

出于对效率和安全的考虑,django管理静态文件的功能仅限于在开发阶段的debug模式下使用,且需要在配置文件的INSTALLED_APPS中加入django.contrib.staticfiles(django工程创建后默认已经安装),网站正式部署上线后,静态文件是由Nginx等服务器管理。

 

注意:

Django 仅在调试模式下(DEBUG=True)能对外提供静态文件。

当DEBUG=False工作在生产模式时,Django不再对外提供静态文件,需要是用collectstatic命令来收集静态文件并交由其他静态文件服务器来提供。

 

static如何配置

首先确保在配置文件的INSTALLED_APPS中加入了 django.contrib.staticfiles(默认已加入)

 
2.8.5Django --4.4 静态文件之static
 

在配置文件中配置STATIC_URL

 
2.8.5Django --4.4 静态文件之static
 

以及STATIC_DIRS

 
2.8.5Django --4.4 静态文件之static
 

之后就能新建一个文件夹叫static

 
2.8.5Django --4.4 静态文件之static
 

他与templates同级

 
2.8.5Django --4.4 静态文件之static
 

 

使用static

引入静态文件:

在html文件头部加上:{% load static %}

既然使用它需要引入,那么代表他并不是我们Django模块内置的模板标签。

我们按住Ctrl+b,点击static。

 
2.8.5Django --4.4 静态文件之static
 

注释:将静态文件的绝对路径返回给使用这个标签html文件。相当于起到一个传递作用。

之后我们就能用  link , style或img 之类的标签引入静态文件,但是在 href 参数需要按照规定的格式:{% static "url.."%}。

例子:我们需要在模板中引入/static/css/下的bootstrap.css

<link rel="stylesheet" href="{% static 'css/bootstrap.css' %}">

而在浏览器看他的时候,浏览器是这么显示的:

<link rel="stylesheet" href="/st/css/bootstrap.css">

 

一个简单的实例

我们用echarts做一个简单的温度折线图:

 
2.8.5Django --4.4 静态文件之static
建立app02

目录树

 
2.8.5Django --4.4 静态文件之static
 

 

tq.html

{%load static %}

<!DOCTYPE html>

<html lang="en">

    <meta charset="UTF-8">

    <title>Title

    <script src="{%static 'js/echarts.js' %}">

    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->

    <div id="main" style="width:600px;height:400px;">

    <script type="text/javascript">

    // 基于准备好的dom,初始化echarts实例

      var myChart =echarts.init(document.getElementById('main'));

      // 指定图表的配置项和数据

      var option = {

        title: {

            text:'未来一周气温变化'

        },

        tooltip: {},

        legend: {},

        toolbox: {},

        xAxis: [{

            data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']

        }],

        yAxis: { },

        series: [{

            name:'最高气温',

            type:'line',

            data:[20,23,29,25,26,21,25]

        },

        {

            name:'最低气温',

            type:'line',

            data: [10,13,15,9,11,10,13]

        }]

};

      // 使用刚指定的配置项和数据显示图表。

      myChart.setOption(option);

</html>

 
2.8.5Django --4.4 静态文件之static
tq.html
 
2.8.5Django --4.4 静态文件之static
views.py
 
2.8.5Django --4.4 静态文件之static
urls.py
 
2.8.5Django --4.4 静态文件之static
最终结果
 
2.8.5Django --4.4 静态文件之static
引入echarts的标签