• Django使用模板后无法找到静态资源文件


    Django使用模板后无法找到静态资源文件

    环境配置

    • Django版本1.11
    • python版本3.6.2

    前言

    在编写Django网站的时候,在涉及模板方面,一些简单的例子都没有问题,但这些例子都有一个共同点,那就是所使用的模板没有需要的静态资源文件。当涉及到模板中需要静态资源文件,如css,js等文件的时候,如果我们不做什么处理,直接按前端写好的给我们放入到templates文件中时,即如下形式:

    |templates

    |----js

    |--------xxxx.js

    |----css

    |--------xxxx.css

    |----xxxx.html

    当运行网站的时候,我们会发现所有需要加载的都没有加载进来,原因便是在渲染页面的时候,Django的处理器将目录对应到了根目录,所以我们使用的其实是在根目录下的静态资源文件(其实并没有),所以也就会出现404错误。

    解决方法

    • 首先settings.py文件中应有如下代码

        STATIC_URL = '/static/'
      

      这是用来定义静态目录URL,一般都已经给出

    • 在每个要使用到静态资源的模板中,我们应该将路径改为static下的目录,比如

         /static/my_app/example.jpg
      

      或者

        {% load static %}
        <img src="{% static "my_app/example.jpg" %}" alt="My image"/>	
      

      当然,不使用static也行,可以自己定义存放静态资源文件的目录,如下:

        STATICFILES_DIRS = [
        os.path.join(BASE_DIR, "static"),
        '/var/www/static/',
        ]
      

      我们需要注意的是,这里的static文件夹是处于你所引用模板的app下的static文件夹,尽量不要把资源放在根目录下static文件夹,因为根目录下的static文件夹一般是用来将所有STATICFILES_DIRS中所有文件夹中的文件,以及各app中static中的文件都复制过来,为的是把这些文件放到一起是用apache等部署的时候更方便,如下

        STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')
      

      我们就定义了一个collected_static在根目录下用来收集所有静态资源文件。

  • 相关阅读:
    利用加载模块之外的地址绕过SafeSEH
    C++ 单实例运行
    添加程序以DLL函数
    HOOK地址还原
    利用未启用SafeSEH模块绕过SafeSEH
    SafeSEH基本概念+ 从堆区绕过SafeSEH学习
    替换.DATA的COOKIE突破GS
    虚函数绕过 GS保护 学习
    攻击虚函数学习
    虚函数学习
  • 原文地址:https://www.cnblogs.com/FZfangzheng/p/8439828.html
Copyright © 2020-2023  润新知