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打开网页和暂停实例
Sep 30 Python
python中迭代器(iterator)用法实例分析
Apr 29 Python
详解使用python crontab设置linux定时任务
Dec 08 Python
Python 编码规范(Google Python Style Guide)
May 05 Python
django连接mysql配置方法总结(推荐)
Aug 18 Python
Flask框架web开发之零基础入门
Dec 10 Python
Python namedtuple命名元组实现过程解析
Jan 08 Python
python离线安装外部依赖包的实现
Feb 13 Python
Python run()函数和start()函数的比较和差别介绍
May 03 Python
基于Python爬取素材网站音频文件
Oct 21 Python
pytorch 把图片数据转化成tensor的操作
Mar 04 Python
Pytorch 如何加速Dataloader提升数据读取速度
May 28 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+mysqli实现批量执行插入、更新及删除数据的方法
2015/01/29 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
详细讲解JS节点知识
2010/01/31 Javascript
解决遍历时Array.indexOf产生的性能问题
2012/07/03 Javascript
javascript自然分类法算法实现代码
2013/10/11 Javascript
jquery实现图片左右切换的方法
2015/05/07 Javascript
基于JavaScript操作DOM常用的API小结
2015/12/01 Javascript
JavaScript函数中关于valueOf和toString的理解
2016/06/14 Javascript
JS遍历对象属性的方法示例
2017/01/10 Javascript
assert()函数用法总结(推荐)
2017/01/25 Javascript
Angular2 之 路由与导航详细介绍
2017/05/26 Javascript
手把手教你把nodejs部署到linux上跑出hello world
2017/06/19 NodeJs
详解基于angular-cli配置代理解决跨域请求问题
2017/07/05 Javascript
js+html5实现页面可刷新的倒计时效果
2017/07/15 Javascript
解决vue页面DOM操作不生效的问题
2018/03/17 Javascript
vue中slot(插槽)的介绍与使用
2018/11/12 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
vue使用高德地图根据坐标定位点的实现代码
2019/08/22 Javascript
javascript之分片上传,断点续传的实际项目实现详解
2019/09/05 Javascript
ES11新增的这9个新特性,你都掌握了吗
2020/10/15 Javascript
如何使用原生Js实现随机点名详解
2021/01/06 Javascript
python压缩文件夹内所有文件为zip文件的方法
2015/06/20 Python
简述Python2与Python3的不同点
2018/01/21 Python
python模仿网页版微信发送消息功能
2018/02/24 Python
python中的print()输出
2019/04/12 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
2020/01/18 Python
Django实现从数据库中获取到的数据转换为dict
2020/03/27 Python
Django+Celery实现动态配置定时任务的方法示例
2020/05/26 Python
python如何使用代码运行助手
2020/07/03 Python
市场开发与营销专业求职信
2013/12/31 职场文书
企业承诺书格式
2014/05/21 职场文书
党委书记群众路线对照检查材料思想汇报
2014/10/04 职场文书
11.9消防日宣传标语
2014/10/08 职场文书
转变工作作风心得体会
2016/01/23 职场文书
python用海龟绘图写贪吃蛇游戏
2021/06/18 Python