zoukankan      html  css  js  c++  java
  • 详解django中的collectstatic命令以及STATIC_URL、STATIC_ROOT配置

    转:https://blog.csdn.net/weixin_36296538/article/details/83153070

    前言:

    最近在琢磨django框架的使用,在上传个人网站服务器上时,再次遇到了找不到静态文件,css、img等样式全无的问题。于是沉下心来,好好研究了django的静态文件到底应该怎么去部署(deploy),一点心得体会现分享于下。


    1. python manage.py collectstatic做了什么Collects the static files into STATIC_ROOT.翻译:把静态文件收集到 STATIC_ROOT中。
    以上是官方文档中的简述。


    当然你肯定会问,从哪里收集这些静态文件呢?


    在回答这个问题前,我们先看一眼自己项目中的setting.py文件:
    STATICFILES_DIRS = [             os.path.join(BASE_DIR, "static/"),]

    STATIC_URL = '/static/'

    STATIC_ROOT = os.path.join(BASE_DIR, "static_new/")

    #其中STATIC_ROOT和STATICFILES_DIRS默认为None,

    #即未设置,我是自己配置成这样子的1234567

    python manage.py collectstatic在执行时,django默认会去查看定义在STATICFILES_DIRS里的目录,以及在INSTALLED_APPS里定义了的app的static目录。如果这些目录下有文件,则把文件全部收集起来,拷贝到STATIC_ROOT目录下。

    当使用django的runserver时,如果请求的是一个静态文件,django也是会默认查看上述的ROOT、DIRS和static目录。但是,在部署到服务器上时,此规则就不使用了。

    2. STATIC_URL的作用URL to use when referring to static files located in STATIC_ROOT.

    Example: “/static/” or “http://www.example.com/static/”翻译:STATIC_URL用于引用STATIC_ROOT所指向的静态文件。


    举个栗子,在python manage.py runserver后,我能够以http://localhost:8000/static/mystie_polls_static.txt为路径,访问到STATIC_ROOT下的静态文件。
    但是,如果你使用了nginx(或其他)服务器后,该规则就无效了。服务器会接管URL匹配规则,你需要在nginx服务器的配置文件中定义/static的alias。
    此外,STATIC_URL还有一个作用,如下:
    假定你的设置文件中有
    STATIC_URL = '/static/'1那么,在templates中,你可以通过模板标签static和给定的相对路径来构成一个URL,如下。
    {% load static %}<img src="{% static "my_app/example.jpg" %}" alt="My image">12此时,构成的URL为my_app/static/my_app/example.jpg。
    如果你在项目中用到了static这个模板标签,那一定要将nginx(或其他)服务器的/static配置到与STATIC_ROOT一致!依我愚见,这样做是有好处的。因为django不像php,只要将静态文件放置在.php或者.html同一目录下就好。比如:<link rel="stylesheet" type="text/css" href="static/css/main.css">,在django中挪进一个文件夹中就可能访问不到了。这个时候static标签就非常有用了;当然你也可以在uwsgi的配置中通过--check-static和--static-map mountpoint=path来解决这个问题。

  • 相关阅读:
    2018-2019-2 20165316 《网络对抗技术》 Exp6 信息搜集与漏洞扫描
    2018-2019-2 网络对抗技术 20165316 Exp5 MSF基础应用
    2018-2019-2 网络对抗技术 20165316 Exp4 恶意代码分析
    2018-2019-2 20165316 『网络对抗技术』Exp3:免杀原理与实践
    2018-2019-2 《网络对抗技术》Exp2 后门原理与实践
    2018-2019-2 20165316 《网络对抗技术》Exp1 PC平台逆向破解
    2018-2019-2 《网络对抗技术》Exp0 Kali安装 Week1 20165316
    最近决定要重新回到博客了
    清华大学OS操作系统实验lab1练习知识点汇总
    基本数据结构学习总结: 二叉树的遍历
  • 原文地址:https://www.cnblogs.com/xuecl/p/12273770.html
Copyright © 2011-2022 走看看