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爬虫之抓取百度贴吧代码分享
Nov 06 Python
python下载文件时显示下载进度的方法
Apr 02 Python
详解Python中的序列化与反序列化的使用
Jun 30 Python
Python字符串拼接六种方法介绍
Dec 18 Python
用python处理MS Word的实例讲解
May 08 Python
使用numba对Python运算加速的方法
Oct 15 Python
OpenCV 轮廓检测的实现方法
Jul 03 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
Jul 06 Python
python ctypes库2_指定参数类型和返回类型详解
Nov 19 Python
python装饰器使用实例详解
Dec 14 Python
python接口自动化如何封装获取常量的类
Dec 24 Python
使用豆瓣源来安装python中的第三方库方法
Jan 26 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
phpfans留言版用到的install.php
2007/01/04 PHP
解析ajax事件的调用顺序
2013/06/17 PHP
php读取3389的脚本
2014/05/06 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
2014/07/19 PHP
php压缩文件夹最新版
2018/07/18 PHP
html数组字符串拼接的最快方法
2009/09/16 Javascript
JavaScript Event学习第五章 高级事件注册模型
2010/02/07 Javascript
jQuery判断密码强度实现思路及代码
2013/04/24 Javascript
jQuery阻止事件冒泡具体实现
2013/10/11 Javascript
js创建表单元素并使用submit进行提交
2014/08/14 Javascript
JS组件系列之Bootstrap Icon图标选择组件
2016/01/28 Javascript
JavaScipt中栈的实现方法
2016/02/17 Javascript
Bootstrap 粘页脚效果
2016/03/28 Javascript
nodeJS模块简单用法示例
2018/04/21 NodeJs
Express之托管静态文件的方法
2018/06/01 Javascript
小程序图片剪裁加旋转的示例代码
2018/07/10 Javascript
微信小程序自定义键盘 内部虚拟支付
2018/12/20 Javascript
生成无限制的微信小程序码的示例代码
2019/09/20 Javascript
javascript实现京东快递单号的查询效果
2020/11/30 Javascript
python实现mysql的单引号字符串过滤方法
2015/11/14 Python
Python 实现随机数详解及实例代码
2017/04/15 Python
Python调用C语言的方法【基于ctypes模块】
2018/01/22 Python
python利用socketserver实现并发套接字功能
2018/01/26 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
2018/12/18 Python
Python接口自动化判断元素原理解析
2020/02/24 Python
python通过函数名调用函数的几种场景
2020/09/23 Python
夏威夷灵感服装及配饰:Reyn Spooner
2018/09/18 全球购物
精灵市场:Pixie Market
2019/06/18 全球购物
房地产促销活动方案
2014/03/01 职场文书
中学校庆方案
2014/03/17 职场文书
寒假家长评语大全
2014/04/16 职场文书
交通安全横幅标语
2014/10/07 职场文书
学生会主席任命书
2015/09/21 职场文书
win10键盘驱动怎么修复?Win10键盘驱动修复小技巧
2022/04/06 数码科技
Spring Boot 的创建和运行示例代码详解
2022/07/23 Java/Android