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 16 Python
python正则表达式及使用正则表达式的例子
Jan 22 Python
python matplotlib 在指定的两个点之间连线方法
May 25 Python
python实现自动网页截图并裁剪图片
Jul 30 Python
Python3中在Anaconda环境下安装basemap包
Oct 21 Python
Python lxml解析HTML并用xpath获取元素的方法
Jan 02 Python
python logging模块的使用总结
Jul 09 Python
如何用Python来搭建一个简单的推荐系统
Aug 07 Python
基于python二叉树的构造和打印例子
Aug 09 Python
python函数调用,循环,列表复制实例
May 03 Python
python 读取、写入txt文件的示例
Sep 27 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
Oct 02 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+MYSQL开发工具及资源收藏
2007/01/02 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
2016/11/25 PHP
解决FLASH需要点击激活的代码
2006/12/20 Javascript
jQuery 1.5 源码解读 面向中高阶JSER
2011/04/05 Javascript
使用Javascript接收get传递的值的代码
2011/11/30 Javascript
关于JQuery($.load)事件的用法和分析
2013/04/09 Javascript
JavaScript实现页面实时显示当前时间的简单实例
2013/07/20 Javascript
JavaScript字符串对象substring方法入门实例(用于截取字符串)
2014/10/17 Javascript
js实现选中复选框文字变色的方法
2015/08/14 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
JavaScript数据存储 Cookie篇
2016/07/02 Javascript
JavaScript蒙板(model)功能的简单实现代码
2016/08/04 Javascript
Javascript从数组中随机取出不同元素的两种方法
2016/09/22 Javascript
让浏览器崩溃的12行JS代码(DoS攻击分析及防御)
2016/10/10 Javascript
vscode下的vue文件格式化问题
2018/11/28 Javascript
VUE解决 v-html不能触发点击事件的问题
2019/10/28 Javascript
浅谈VUE中演示v-for为什么要加key
2020/01/16 Javascript
微信小程序用canvas画图并分享
2020/03/09 Javascript
python使用matplotlib库生成随机漫步图
2018/08/27 Python
python celery分布式任务队列的使用详解
2019/07/08 Python
浅谈Django中view对数据库的调用方法
2019/07/18 Python
python使用minimax算法实现五子棋
2019/07/29 Python
python使用requests.session模拟登录
2019/08/09 Python
解决python Jupyter不能导入外部包问题
2020/04/15 Python
python分布式爬虫中消息队列知识点详解
2020/11/26 Python
12个不为大家熟知的HTML5设计小技巧
2016/06/02 HTML / CSS
Canvas系列之滤镜效果
2019/02/12 HTML / CSS
Sephora丝芙兰印尼官方网站:购买化妆品和护肤品
2018/07/02 全球购物
高二历史教学反思
2014/01/25 职场文书
《长江之歌》教学反思
2014/04/17 职场文书
计算机考试作弊检讨书1000字
2015/01/01 职场文书
用人单位聘用意向书
2015/05/11 职场文书
CSS3鼠标悬浮过渡缩放效果
2021/04/17 HTML / CSS
“鬼灭之刃”热度不减,其成功背后的原因是什么?
2022/03/22 日漫
未发现nvidia显卡怎么办?Win11系统中未检测到nvidia显卡解决教程
2022/04/08 数码科技
win10截图快捷键win+shift+s没有反应无法截图怎么解决?
2022/08/14 数码科技