django静态文件加载的方法


Posted in Python onMay 20, 2018

在模板中往往要加载静态文件,如CSS, JavaScript,图片等。那么这些文件在django中如何才能正确加载呢?

首先要在settings文件中进行设置,关于静态文件的设置选项主要由以下几项:

1. STATIC_URL = '/static/'

指定静态文件查找的url。这样设置后一般来说我们只要把静态文件放在 APP 中的 static 目录下就可以,但是有时我们有一些共用的静态文件,这时候可以设置 STATICFILES_DIRS 另外弄一个文件夹。

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

当运行 python manage.py collectstatic 的时STATIC_ROOT 文件夹是用来复制所有STATICFILES_DIRS文件夹中的文件,以及各app中static中的文件。把这些文件放到一起是为了用apache等部署的时候更方便。

3.      

STATICFILES_DIRS = (
  ("images",os.path.join(STATIC_URL, 'images').replace('\\', '/')),
  ("css",  os.path.join(STATIC_URL, 'css').replace('\\', '/')),
  ("js",  os.path.join(STATIC_URL, 'js').replace('\\', '/')),
)

其它存放静态文件的文件夹,可以用来存放项目中公用的静态文件,里面不能包含 STATIC_ROOT如果不想用 STATICFILES_DIRS 可以不用,都放在 app 里的 static 中也可以。

 4.     

STATICFILES_FINDERS = (
  "django.contrib.staticfiles.finders.FileSystemFinder",
  "django.contrib.staticfiles.finders.AppDirectoriesFinder"

)

默认设置,相当于搜索引擎,Django 默认会在 STATICFILES_DIRS中的文件夹和 各app下的static文件夹中找文件。注意有先后顺序,找到了就不再继续找了。

 那如何在模版中使用这些静态文件呢?可以参考如下代码,其中语句{% load static from staticfiles %}在这个模版文件中只需要出现一次。

{% load static from staticfiles %}

<link href="{% static" rel="external nofollow" css/sample.css" %}" rel="stylesheet">

用下边的方法也可

{% load static from staticfiles %}
{% static "css/sample.css" assample %}
<link href="{{ sample }}" rel="external nofollow" rel="stylesheet">

Django在运行时会自动将这些文件映射到STATIC_URL所给定的值下。也就是如,如果STATIC_URL = '/static/',那么在运行时,上边模版中的样例中的url会被替换为/static/css/sample.css。

这里做两点说明:

1.其实将静态文件路径硬编码在模版中也可以正常运行,如使用href="/static/css/sample.css" rel="external nofollow" ,前提是配置好了STATIC_URL和STATIC_DIRS。但并不推荐这么做,因为如果后来静态资源的位置发生了迁移,如使用独立服务器或者使用CDN,就要修改一大堆URL。而使用推荐的方法可以避免这个庞大的工作量,最多只需要修改STATIC_URL即可。

2.如果css文件中也使用了静态文件如css背景,则按照相对路径使用即可,因为浏览器解析css是会自动按照相对路径寻找到正确的URL。

在这里还需要强调的是,在开发阶段,Django使用的是内建的一个静态文件服务器,虽然在生产环境中也可以使用,但是它既不稳定也不安全。更好的方式是使用提供web服务的服务器如apache来服务静态文件。这需要你首先上传代码到服务器,然后运行collectstatic命令:python manage.py collectstatic 然后配置web服务器来为静态文件服务,如对Apache2进行配置。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
手动实现把python项目发布为exe可执行程序过程分享
Oct 23 Python
Python基于opencv的图像压缩算法实例分析
May 03 Python
python中int与str互转方法
Jul 02 Python
Python 中的range(),以及列表切片方法
Jul 02 Python
对Pandas MultiIndex(多重索引)详解
Nov 16 Python
python config文件的读写操作示例
Sep 27 Python
基于keras输出中间层结果的2种实现方式
Jan 24 Python
快速解释如何使用pandas的inplace参数的使用
Jul 23 Python
python 实现Harris角点检测算法
Dec 11 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
Feb 01 Python
Python还能这么玩之用Python修改了班花的开机密码
Jun 04 Python
python使用pymysql模块操作MySQL
Jun 16 Python
django中静态文件配置static的方法
May 20 #Python
Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法
May 19 #Python
Python利用公共键如何对字典列表进行排序详解
May 19 #Python
Python中一些不为人知的基础技巧总结
May 19 #Python
Python + selenium自动化环境搭建的完整步骤
May 19 #Python
pandas中去除指定字符的实例
May 18 #Python
pandas数据清洗,排序,索引设置,数据选取方法
May 18 #Python
You might like
为查询结果建立向后/向前按钮
2006/10/09 PHP
php日历制作代码分享
2014/01/20 PHP
laravel容器延迟加载以及auth扩展详解
2015/03/02 PHP
CodeIgniter 完美解决URL含有中文字符串
2016/05/13 PHP
PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算示例【基于strtotime】
2017/04/19 PHP
php异常处理捕获错误整理
2019/09/23 PHP
jquery 定位input元素的几种方法小结
2013/07/28 Javascript
js转义字符介绍
2013/11/05 Javascript
JS小功能(列表页面隔行变色)简单实现
2013/11/28 Javascript
js 针对html DOM元素操作等经验累积
2014/03/11 Javascript
javascript trim函数在IE下不能用的解决方法
2014/09/12 Javascript
JS或jQuery获取ASP.NET服务器控件ID的方法
2015/06/08 Javascript
JS获取数组最大值、最小值及长度的方法
2015/11/24 Javascript
Vue.js学习之计算属性
2017/01/22 Javascript
vue-resource + json-server模拟数据的方法
2017/11/02 Javascript
vue文件运行的方法教学
2019/02/12 Javascript
17道题让你彻底理解JS中的类型转换
2019/08/08 Javascript
layui动态表头的实现代码
2019/08/22 Javascript
Vue组件基础用法详解
2020/02/05 Javascript
nuxt.js服务端渲染中axios和proxy代理的配置操作
2020/11/06 Javascript
Python实现的金山快盘的签到程序
2013/01/17 Python
跟老齐学Python之Import 模块
2014/10/13 Python
django主动抛出403异常的方法详解
2019/01/04 Python
python 读取数据库并绘图的实例
2019/12/03 Python
keras小技巧——获取某一个网络层的输出方式
2020/05/23 Python
如何在vscode中安装python库的方法步骤
2021/01/06 Python
部门活动策划方案
2014/08/16 职场文书
村安全生产责任书
2014/08/25 职场文书
简易版租房协议书范本
2014/10/13 职场文书
学习心理学的体会
2014/11/07 职场文书
师德标兵事迹材料
2014/12/19 职场文书
新学期家长寄语2016
2015/12/03 职场文书
《将心比心》教学反思
2016/02/23 职场文书
六年级上册《闻官军收河南河北》的教学设计
2019/11/15 职场文书
MongoDB使用场景总结
2022/02/24 MongoDB
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL