Django使用模板后无法找到静态资源文件
2018-02-10 21:44
561 查看
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在根目录下用来收集所有静态资源文件。
相关文章推荐
- 解决 IntelliJ IDEA 无法热加载 Spring Boot 模板文件和静态资源文件
- django 模板使用静态文件
- Django开发服务器无法找到静态文件的解决方法
- 解决 IntelliJ IDEA 无法热加载 Spring Boot 模板文件和静态资源文件
- Django(五)在模板中使用静态文件
- AndroidAnnotations 使用在library项目中出现无法找到R文件下资源索引的错误
- 解决 IntelliJ IDEA 无法热加载 Spring Boot 模板文件和静态资源文件
- 01.Django学习之安装,建立项目,传参,MySQL数据库,静态文件配置和模板的使用
- django模板中使用静态文件的方法
- Django通过django.contrib.staticfiles使用静态文件
- 无法找到“XXX.exe”的调试信息,或者调试信息不匹配。未使用调试信息生成二进制文件。”遇到这种情况肿么办???
- 使用Django来处理对于静态文件的请求
- Adobe Acrobat 虚拟打印机安装方法(无法找到Adobe PDF资源文件)
- 使用URLRewriter重写后,相同后缀后的真实静态文件无法访问的解决办法
- VS 2005 不能调试无法找到调试信息 未使用调试信息生成二进制文件
- 系统搜索功能不能使用,弹出“无法找到运行搜索助理需要的一个文件”
- WPF BitmapImage 图片资源无法删除,文件正在被另一个进程使用
- WPF BitmapImage 图片资源无法删除,文件正在被另一个进程使用
- 解决WPF BitmapImage图片资源无法删除,文件正在被另一个进程使用
- 使用Django来处理对于静态文件的请求