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 flask 多对多表查询功能
Jun 25 Python
python之django母板页面的使用
Jul 03 Python
python使用Pandas库提升项目的运行速度过程详解
Jul 12 Python
Python完成哈夫曼树编码过程及原理详解
Jul 29 Python
Python 转换文本编码实现解析
Aug 27 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
Nov 11 Python
Python综合应用名片管理系统案例详解
Jan 03 Python
tensorflow 环境变量设置方式
Feb 06 Python
Python实现删除某列中含有空值的行的示例代码
Jul 20 Python
Selenium之模拟登录铁路12306的示例代码
Jul 31 Python
PyCharm常用配置和常用插件(小结)
Feb 06 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
如何正确理解PHP的错误信息
2006/10/09 PHP
PHP中计算字符串相似度的函数代码
2012/12/29 PHP
php+ajax无刷新上传图片实例代码
2015/11/17 PHP
Yii清理缓存的方法
2016/01/06 PHP
php readfile()修改文件上传大小设置
2017/08/11 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
JS获取dom 对象 ajax操作 读写cookie函数
2009/11/18 Javascript
javascript json 新手入门文档
2009/12/03 Javascript
JavaScript 计算图片加载数量的代码
2011/01/01 Javascript
JavaScript地图拖动功能SpryMap的简单实现
2013/07/17 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
使用纯javascript实现放大镜效果
2015/03/18 Javascript
AngularJS数据源的多种获取方式汇总
2016/02/02 Javascript
简单封装js的dom查询实例代码
2016/07/08 Javascript
AngularJS 2.0入门权威指南
2016/10/08 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
2016/11/09 Javascript
javascript prototype原型详解(比较基础)
2016/12/26 Javascript
分析javascript中9 个常见错误阻碍你进步
2017/09/18 Javascript
jQuery中图片展示插件highslide.js的简单dom
2018/04/22 jQuery
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
js 压缩图片的示例(只缩小体积,不更改图片尺寸)
2020/10/21 Javascript
[03:44]2015国际邀请赛选手档案—Cloud9.NoTail
2015/07/28 DOTA
Python数组遍历的简单实现方法小结
2016/04/27 Python
python全栈要学什么 python全栈学习路线
2019/06/28 Python
python类中super() 的使用解析
2019/12/19 Python
tensorflow 动态获取 BatchSzie 的大小实例
2020/06/30 Python
python实现将中文日期转换为数字日期
2020/07/14 Python
简述 Python 的类和对象
2020/08/21 Python
linux面试相关问题
2012/08/11 面试题
会计找工作求职信范文
2013/12/09 职场文书
农民工工资支付承诺函
2014/03/31 职场文书
学历证明范文
2015/06/16 职场文书
小学教师见习总结
2015/06/23 职场文书
基于nginx实现上游服务器动态自动上下线无需reload的实现方法
2021/03/31 Servers
PHP 时间处理类Carbon
2022/05/20 PHP
python playwright之元素定位示例详解
2022/07/23 Python