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 相关文章推荐
django DRF图片路径问题的解决方法
Sep 10 Python
在python中利用KNN实现对iris进行分类的方法
Dec 11 Python
如何使用Python进行OCR识别图片中的文字
Apr 01 Python
Python_查看sqlite3表结构,查询语句的示例代码
Jul 17 Python
信号生成及DFT的python实现方式
Feb 25 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
Mar 18 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
May 27 Python
python如何删除列为空的行
Jul 17 Python
详解numpy1.19.4与python3.9版本冲突解决
Dec 15 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
Jan 06 Python
python 图像增强算法实现详解
Jan 24 Python
python井字棋游戏实现人机对战
Apr 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
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
用PHP代码在网页上生成图片
2015/07/01 PHP
javascript的对话框详解与参数
2007/03/08 Javascript
jQuery 浮动广告实现代码
2008/12/25 Javascript
jQuery温习篇 强大的JQuery选择器
2010/04/24 Javascript
JavaScript访问样式表代码
2010/10/15 Javascript
jQuery焦点图切换特效插件封装实例
2013/08/18 Javascript
判定是否原生方法的JS代码
2013/11/12 Javascript
jquery修改属性值实例代码(设置属性值)
2014/01/06 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
jquery实现图片放大镜功能
2015/11/23 Javascript
AngularJS 日期格式化详解
2015/12/23 Javascript
JavaScript通过filereader接口读取文件
2017/05/10 Javascript
bootstrap动态调用select下拉框的实例代码
2018/08/09 Javascript
微信小程序 Storage更新详解
2019/07/16 Javascript
javascript面向对象三大特征之继承实例详解
2019/07/24 Javascript
javascript数组的定义及操作实例
2019/11/10 Javascript
three.js欧拉角和四元数的使用方法
2020/07/26 Javascript
[36:19]2018DOTA2亚洲邀请赛 小组赛 A组加赛 Newbee vs LGD
2018/04/03 DOTA
[46:59]完美世界DOTA2联赛PWL S2 GXR vs Ink 第二场 11.19
2020/11/20 DOTA
[06:57]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD 选手采访
2021/03/11 DOTA
Python实现简单状态框架的方法
2015/03/19 Python
浅析python协程相关概念
2018/01/20 Python
mac安装scrapy并创建项目的实例讲解
2018/06/13 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
2019/02/18 Python
使用TensorFlow实现简单线性回归模型
2019/07/19 Python
tensorflow 自定义损失函数示例代码
2020/02/05 Python
详解Pycharm出现out of memory的终极解决方法
2020/03/03 Python
pycharm实现在子类中添加一个父类没有的属性
2020/03/12 Python
学习Python需要哪些工具
2020/09/04 Python
Python中lru_cache的使用和实现详解
2021/01/25 Python
CSS3实现网站商品展示效果图
2020/01/18 HTML / CSS
美国NBA官方商店:NBA Store
2019/04/12 全球购物
英国亚马逊官方网站:Amazon.co.uk
2019/08/09 全球购物
委托书的样本
2015/01/28 职场文书
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
2022/06/21 Python