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程序中用csv模块来操作csv文件的基本使用教程
Mar 03 Python
Django实现的自定义访问日志模块示例
Jun 23 Python
Python设计模式之门面模式简单示例
Jan 09 Python
Python实现决策树C4.5算法的示例
May 30 Python
一看就懂得Python的math模块
Oct 21 Python
详解Django-auth-ldap 配置方法
Dec 10 Python
python模拟键盘输入 切换键盘布局过程解析
Aug 15 Python
使用遗传算法求二元函数的最小值
Feb 11 Python
Python判断字符串是否为空和null方法实例
Apr 26 Python
Python日志处理模块logging用法解析
May 19 Python
Python2.6版本pip安装步骤解析
Aug 17 Python
Python如何实现感知器的逻辑电路
Dec 25 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 判断常量,变量和函数是否存在
2009/04/26 PHP
巧用php中的array_filter()函数去掉多维空值的代码分享
2012/09/07 PHP
详谈PHP编码转换问题
2015/07/28 PHP
PHP编程中的Session阻塞问题与解决方法分析
2017/08/07 PHP
PHP双向链表定义与用法示例
2018/01/31 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
表单JS弹出填写提示效果代码
2011/04/16 Javascript
JavaScript通过select动态更换图片的方法
2015/03/23 Javascript
javascript html5实现表单验证
2016/03/01 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
AngularJS中实现动画效果的方法
2016/07/28 Javascript
详解如何用babel转换es6的class语法
2018/04/03 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
如何获取vue单文件自身源码路径
2019/05/06 Javascript
Python交换变量
2008/09/06 Python
python+VTK环境搭建及第一个简单程序代码
2017/12/13 Python
在pandas多重索引multiIndex中选定指定索引的行方法
2018/11/16 Python
对python:print打印时加u的含义详解
2018/12/15 Python
对json字符串与python字符串的不同之处详解
2018/12/19 Python
详解如何在Apache中运行Python WSGI应用
2019/01/02 Python
python读csv文件时指定行为表头或无表头的方法
2019/06/26 Python
对python中的装包与解包实例详解
2019/08/24 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
2019/12/19 Python
python计算二维矩形IOU实例
2020/01/18 Python
Python使用进程Process模块管理资源
2020/03/05 Python
Python json读写方式和字典相互转化
2020/04/18 Python
MYSQL相比于其他数据库有哪些特点
2013/07/19 面试题
实习生个人的自我评价
2013/12/08 职场文书
环保宣传标语
2014/06/12 职场文书
世界遗产导游词
2015/02/13 职场文书
2015年青年志愿者协会工作总结
2015/04/27 职场文书
指导老师鉴定意见
2015/06/05 职场文书
先进个人主要事迹范文
2015/11/04 职场文书
2016中秋晚会开幕词
2016/03/03 职场文书
JavaScript如何利用Promise控制并发请求个数
2021/05/14 Javascript
Nginx反向代理、重定向
2022/04/13 Servers