Django中如何使用sass的方法步骤


Posted in Python onJuly 09, 2019

作为一个运维开发,不像业务开发只专注后端业务开发即可,常常需要自己来构建前端的东西,当然系统交互体验说的过去就行,要求也没有业务系统那么高。但是还是会接触很多前端的知识,像是css、html、javascript 是必不可少的,你可以不精通,但必须会用。最近前端发展迅猛,已向着工程化大前端进发。常常开玩笑说,前端才是全栈,前后端、各平台全端通吃,现在貌似已成为事实。

今天,和大家分享下前端样式工具 sass 如何在 Django 中应用。

什么是 sass

Sass or (Syntactically awesome style sheets) is a preprocessor scripting language that is interpreted or compiled into Cascading Style Sheets (CSS). - Wikipedia

以上是wiki百科的解释,简单来说,sass 是一种方便大家来编写css的一种高级的样式预编译语言。只所以叫「预编译」,是因为使用它的时候,需要编译成浏览器能识别的css。

官方网站: https://sass-lang.com/

Sass 3版本以后,新引入了 Scss 语法,它完全兼容 Css3 ,并且继承了 Sass 的强大功能。关于 Scss 和 Sass ,这里不做过多解释,有兴趣的可参考官方文档介绍。

话说回来, Sass 除了编写方便外,还有那些优势,大家可阅读这篇经典的文章 why sass? 。

下面,来说下怎么在我们的常用web框架 Django 中如何集成。

在Django中使用sass

下面我们来一步步的配置 Sass 。环境如下:

  • Python:3.6
  • Django: 2.2

创建Django项目

1、创建Python的开发虚拟环境:

$ python3 -m venv env
$ source env/bin/active

2、安装 django , 创建 django 项目;

$ pip install django
$ django-admin startproject sass_demo

3、增加相关配置

# settings.py

TEMPLATES = [
  {
   ...
   'DIRS': [
     os.path.join(BASE_DIR, 'templates')
   ],
  } ... 
]

并创建一个 index.html 模板,如下:

<html>
 <head>
  <title>Django sass demo</title>
 </head>
 <body>
  <div class="content">
   Django sass demo 
  </div>
 </body>
</html>

运行 python manaage.py runserver 检查Django项目是否配置好。

安装Django sass

这里我们采用了两个Django的第三方应用 django-compressor 和 django-sass-processor , 分别对 css 进行压缩和编译。

1、安装django sass 应用库

$ pip install libsass django-compressor django-sass-processor

2、settings 中增加如下配置

INSTALLED_APPS = [
  …
  'sass_processor',
  …
]

STATICFILES_FINDERS = [
 'django.contrib.staticfiles.finders.FileSystemFinder',
 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
 'sass_processor.finders.CssFinder',
]

# Django Sass 编译后css 的存放位置
SASS_PROCESSOR_ROOT = os.path.join(BASE_DIR,'static','css')

3、添加sass文件

创建sass 文件。

$ mkdir static && touch static/css/demo.scss

在 index.html 中加入如下配置:

{% load sass_tags %}
<html>
 <head>
  <title>Django sass demo</title>
  <link href="{% sass_src 'css/demo.scss' %}" rel="external nofollow" rel="stylesheet" type="text/css" />
 </head>
 <body>
  <div class="content">
   Django sass demo 
  </div>
 </body>
</html>

demo.scss 添加sass 的样式代码:

body {
 .content{
  width: 100%;
  padding: 20px;
  text-align: center;
  background: grey;
  p {
   padding: 20px;
   background: pink;
  }
 }
}

在浏览器,再次刷新会看到样式生效。打开开发者工具,查看html代码,会发现,sass代码已替换为css,如下:

<link href="/static/css/demo.css" rel="external nofollow" rel="stylesheet" type="text/css">

至此,整个Sass 的集成工作就完成了。

总结

django-compressor 和 django-sass-processor 很好的完成了css的编译和压缩工作,上文只是简单快速的描述了下配置的过程,还有更多功能大家可参阅他们的使用文档。另外他们的压缩功能是根据 Debug 来控制的,只有生产环境,即 Debug 为false 的时候才会压缩。测试环境中,可通过添加如下参数尝试:

SASS_OUTPUT_STYLE = 'compressed'

以上代码的完整版本,可从这里获取: https://github.com/pylixm/django-sass-demo

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

Python 相关文章推荐
python模拟鼠标拖动操作的方法
Mar 11 Python
python脚本设置系统时间的两种方法
Feb 21 Python
Python 内置函数complex详解
Oct 23 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
Sep 25 Python
python pandas库的安装和创建
Jan 10 Python
Python删除n行后的其他行方法
Jan 28 Python
获取Pytorch中间某一层权重或者特征的例子
Aug 17 Python
安装Pycharm2019以及配置anconda教程的方法步骤
Nov 11 Python
Python3监控疫情的完整代码
Feb 20 Python
python之随机数函数的实现示例
Dec 30 Python
python爬虫今日热榜数据到txt文件的源码
Feb 23 Python
如何在Python项目中引入日志
May 31 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
Jul 08 #Python
使用python socket分发大文件的实现方法
Jul 08 #Python
python查看文件大小和文件夹内容的方法
Jul 08 #Python
python 搜索大文件的实例代码
Jul 08 #Python
代码实例讲解python3的编码问题
Jul 08 #Python
Python参数类型以及常见的坑详解
Jul 08 #Python
python里运用私有属性和方法总结
Jul 08 #Python
You might like
通过JavaScript或PHP检测Android设备的代码
2011/03/09 PHP
php数组中删除元素的实现代码
2012/06/22 PHP
PHP捕获Fatal error错误的方法
2014/06/11 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
2015/05/08 PHP
PHP多进程之pcntl_fork的实例详解
2017/10/15 PHP
thinkPHP5框架路由常用知识点汇总
2019/09/15 PHP
js模拟类继承小例子
2010/07/17 Javascript
深入理解JavaScript系列(6) 强大的原型和原型链
2012/01/15 Javascript
JS事件Event元素(兼容IE,Firefox,Chorme)
2012/11/01 Javascript
Js与Jq 获取页面元素值的方法和差异对比
2015/04/30 Javascript
js封装tab标签页实例分享
2016/12/19 Javascript
vue2.0实战之使用vue-cli搭建项目(2)
2017/03/27 Javascript
基于pako.js实现gzip的压缩和解压功能示例
2017/06/13 Javascript
JavaScript 保护变量不被随意修改的实现代码
2017/09/27 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
vue 父组件中调用子组件函数的方法
2019/06/06 Javascript
最简单的vue消息提示全局组件的方法
2019/06/16 Javascript
vue实现鼠标移过出现下拉二级菜单功能
2019/12/12 Javascript
AngularJs的$http发送POST请求,php无法接收Post的数据问题及解决方案
2020/08/13 Javascript
[50:20]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第四局
2016/03/06 DOTA
Python中使用PIL库实现图片高斯模糊实例
2015/02/08 Python
Python日志模块logging简介
2015/04/13 Python
python爬虫之模拟登陆csdn的实例代码
2018/05/18 Python
Django实战之用户认证(初始配置)
2018/07/16 Python
python装饰器相当于函数的调用方式
2019/12/27 Python
python 带时区的日期格式化操作
2020/10/23 Python
Python根据URL地址下载文件并保存至对应目录的实现
2020/11/15 Python
新西兰航空中国官网:Air New Zealand China
2018/07/24 全球购物
公司领导推荐信
2013/11/12 职场文书
人民调解员先进事迹材料
2014/05/08 职场文书
社会公德演讲稿
2014/05/20 职场文书
公司催款律师函
2015/05/27 职场文书
和领导吃饭祝酒词
2015/08/11 职场文书
复制别人的成功真的会成功吗?
2019/10/17 职场文书
读《钢铁是怎样炼成的》有感:百炼方成钢
2019/11/05 职场文书
ElementUI实现el-form表单重置功能按钮
2021/07/21 Javascript