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演示数型数据结构的教程
Apr 03 Python
Python中datetime常用时间处理方法
Jun 15 Python
详解python的数字类型变量与其方法
Nov 20 Python
Python使用base64模块进行二进制数据编码详解
Jan 11 Python
Python获取当前公网ip并自动断开宽带连接实例代码
Jan 12 Python
利用Python如何实现一个小说网站雏形
Nov 23 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
Feb 03 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
Apr 21 Python
500行python代码实现飞机大战
Apr 24 Python
python实时监控logstash日志代码
Apr 27 Python
python中如何打包用户自定义模块
Sep 23 Python
pytorch中[..., 0]的用法说明
May 20 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/04 新手入门
由php的call_user_func传reference引发的思考
2010/07/23 PHP
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
2010/12/29 PHP
PHP经典面试题集锦
2015/03/19 PHP
android上传图片到PHP的过程详解
2015/08/03 PHP
PHP编写登录验证码功能 附调用方法
2016/05/19 PHP
跟着Jquery API学Jquery之一 选择器
2010/04/07 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
2015/09/30 Javascript
JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析
2016/05/24 Javascript
javascript设计模式之module(模块)模式
2016/08/19 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
2017/04/10 Javascript
JavaScript简单拖拽效果(1)
2017/05/17 Javascript
解决vue.js在编写过程中出现空格不规范报错的问题
2017/09/20 Javascript
深入理解js 中async 函数的含义和用法
2018/05/13 Javascript
jQuery模拟12306城市选择框功能简单实现方法示例
2018/08/13 jQuery
Vue实现移动端页面切换效果【推荐】
2018/11/13 Javascript
jQuery基于随机数解决中午吃什么去哪吃问题示例
2018/12/29 jQuery
详解VUE单页应用骨架屏方案
2019/01/17 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
layUI的验证码功能及校验实例
2019/10/25 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
2020/05/12 Javascript
JavaScript 中判断变量是否为数字的示例代码
2020/10/22 Javascript
Python设计模式之装饰模式实例详解
2019/01/21 Python
Django基础三之视图函数的使用方法
2019/07/18 Python
linux下python中文乱码解决方案详解
2019/08/28 Python
python网络爬虫 CrawlSpider使用详解
2019/09/27 Python
基于python图像处理API的使用示例
2020/04/03 Python
单位工程竣工验收方案
2014/03/16 职场文书
幼儿园见习报告范文
2014/10/30 职场文书
新郎父母婚礼致辞
2015/07/27 职场文书
小学数学教师研修日志
2015/11/13 职场文书
医院中层管理人员培训心得体会
2016/01/11 职场文书
幼儿园2016圣诞节活动总结
2016/03/31 职场文书
行政后勤人员工作计划应该怎么写?
2019/08/16 职场文书
Node.js实现爬取网站图片的示例代码
2022/04/04 NodeJs