zoukankan      html  css  js  c++  java
  • python---django中STATIC_ROOT和STATIC_URL以及STATICFILES_DIRS

    先引入两篇相关文章,从中了解更为详细

    django 静态资源配置详解

    django静态文件配置

    Django的STATIC_ROOT和STATIC_URL以及STATICFILES_DIRS(先看)

    1.STATIC_URL

    #这个必须配置
    STATIC_URL = '/statics/'
      
    #这个可以不用配置
    STATICFILES_DIRS = (
    os.path.join(BASE_DIR,'statics'),#BASE_DIR是项目根目录(绝对路径)
    )

    其中STATIC_URL是用资源路径前缀,用于访问资源时使用STATIC_URL即可,

    STATIC_URL是对于每个项目APP的静态资源存放路径

    #各个项目路径
    INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'blog', 'ts' )

    blog项目:

    blog
        statics(当前app静态资源路径)
                jquery.js
        ...

    其中statics目录就是STATIC_URL,每个项目APP的静态资源存放路径都应该为STATIC_URL

    并且STATIC_URL必须存在,才能在模板文件中使用

    <script src="statics/jquery.js"></script><!--statics是STATIC_URL前缀,与其保持一致-->

    若是不存在STATIC_URL,会报错:

    #django.core.exceptions.ImproperlyConfigured: You're using the staticfiles app without having set the required STATIC_URL setting.

    2.STATICFILES_DIRS

    STATICFILES_DIRS不是必须存在

    其中STATIC_URL代表各个APP中的静态资源存放路径,放在各个APP目录下

    而STATICFILES_DIRS则是放在项目根目录下

    STATICFILES_DIRS = (
        os.path.join(BASE_DIR,'statics'),
    )

    项目文件分布:

    HelloWorld    项目
       HelloWorld(全局文件存放,项目启动产生)
        settings
        urls
        wsgi blog (APP) statics (静态资源文件) ... ts (APP) statics ... statics (项目根目录下静态资源文件)
      
    common_static(STATIC_ROOT使用)
       ...

    一般:当STATICFILES_DIRS存在时,首先到STATICFILES_DIRS里面寻找静态文件,其次再到各个app的statics文件夹里面找

    不存在STATICFILES_DIRS时,会直接根据STATIC_URL去APP目录下查找,但是记住,STATIC_URL是必须要添加的

    3.STATIC_ROOT

    STATIC_ROOT = os.path.join(BASE_DIR, 'common_static')#名字自己随意,必须创建这个文件夹

    在生产环境中,集中存放静态资源有利于管理使用静态资源

    配置完STATIC_ROOT以后,需要执行

    python manage.py collectstatic

    命令,配合STATIC_ROOT,会自动将各个app(包括STATICFILES_DIRS中的)下的静态文件集中到STATIC_ROOT目录下。

    Type 'yes' to continue, or 'no' to cancel: yes

    记得不是y,是yes

    其中会发现,对于python manage.py collectstatic这个命令,发现可以将STATICFILES_DIRS的资源添加(而且默认会将admin中的静态文件也加入),但是当STATIC_URL中指定文件夹为statics(或者其他)时,不会添加到STATIC_ROOT指定文件夹中,但是在APP目录下单纯添加static文件夹,而不修改STATIC_URL路径,依然是

    STATIC_URL = '/statics/'

    当执行python manage.py collectstatic

    命令是,会将static文件夹中静态文件加入到STATIC_ROOT中

    blog
        statics    (不会添加氮STATIC_ROOT中,但是STATIC_URL指向他)
        static     (会添加到STATIC_ROOT中但是STATIC_URL没有指向)
        ...

    所以为了避免不必要的坑,最好选择直接使用

    STATIC_URL = '/static/'
  • 相关阅读:
    使用a标签制作tooltips
    使用editorconfig配置你的编辑器
    JointJS绘制流程图
    用highcharts展现你的数据
    css段落首字母下沉
    sklearn框架的系统学习
    numpy删除二维数据矩阵的行和列
    sklearn中机器学习算法评价指标
    sklearn调用逻辑回归算法
    sklearn调用多项式回归
  • 原文地址:https://www.cnblogs.com/ssyfj/p/8641174.html
Copyright © 2011-2022 走看看