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使用rabbitmq实现网络爬虫示例
Feb 20 Python
Python 列表排序方法reverse、sort、sorted详解
Jan 22 Python
浅析Python中元祖、列表和字典的区别
Aug 17 Python
python中利用await关键字如何等待Future对象完成详解
Sep 07 Python
Python自定义线程池实现方法分析
Feb 07 Python
python实现二叉查找树实例代码
Feb 08 Python
python将文本中的空格替换为换行的方法
Mar 19 Python
Python可变和不可变、类的私有属性实例分析
May 31 Python
python列表每个元素同增同减和列表元素去空格的实例
Jul 20 Python
解决python父线程关闭后子线程不关闭问题
Apr 25 Python
python使用shell脚本创建kafka连接器
Apr 29 Python
python pandas 解析(读取、写入)CSV 文件的操作方法
Dec 24 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
20个2014年最优秀的PHP框架回顾
2014/10/22 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
2017/04/04 PHP
网页中的图片的处理方法与代码
2009/11/26 Javascript
jquery ajax post提交数据乱码
2013/11/05 Javascript
Query中click(),bind(),live(),delegate()的区别
2013/11/19 Javascript
Javascript核心读书有感之表达式和运算符
2015/02/11 Javascript
JavaScript中的分号插入机制详细介绍
2015/02/11 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
jQuery往textarea中光标所在位置插入文本的方法
2015/06/26 Javascript
jQuery实现的类似淘宝网站搜索框样式代码分享
2015/08/24 Javascript
sso跨域写cookie的一段js脚本(推荐)
2016/05/25 Javascript
原生JS获取元素集合的子元素宽度实例
2016/12/14 Javascript
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
基于Node.js的WebSocket通信实现
2017/03/11 Javascript
nodejs读取并去重excel文件
2018/04/22 NodeJs
使用layui 渲染table数据表格的实例代码
2018/08/19 Javascript
浅谈vue方法内的方法使用this的问题
2018/09/15 Javascript
使用ECharts实现状态区间图
2018/10/25 Javascript
Javascript ParentNode和ChildNode接口原理解析
2020/03/16 Javascript
python中日期和时间格式化输出的方法小结
2015/03/19 Python
在Python中使用HTML模版的教程
2015/04/29 Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
2017/09/08 Python
python 将list转成字符串,中间用符号分隔的方法
2018/10/23 Python
Python下opencv图像阈值处理的使用笔记
2019/08/04 Python
Python多线程Threading、子线程与守护线程实例详解
2020/03/24 Python
印度最大的时尚购物网站:Myntra
2018/09/13 全球购物
初中生个人学习的自我评价
2013/12/04 职场文书
销售冠军获奖感言
2014/02/03 职场文书
2014年公务员思想汇报范文:全心全意为人民服务
2014/03/06 职场文书
2014世界杯球队球队口号
2014/06/05 职场文书
2015年企业员工工作总结范文
2015/05/21 职场文书
2016年社区六一儿童节活动总结
2016/04/06 职场文书
创业分两种人:那么哪些适合创业?,哪些适合不适合创业呢?
2019/08/23 职场文书
WebWorker 封装 JavaScript 沙箱详情
2021/11/02 Javascript
React四级菜单的实现
2022/04/08 Javascript
Django框架模板用法详解
2022/06/10 Python