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代码(逐级优化)
May 25 Python
Python工程师面试题 与Python Web相关
Jan 14 Python
python爬取淘宝商品详情页数据
Feb 23 Python
Python2.7.10以上pip更新及其他包的安装教程
Jun 12 Python
python中的变量如何开辟内存
Jun 26 Python
只需7行Python代码玩转微信自动聊天
Jan 27 Python
python实现邮件自动发送
Aug 10 Python
基于Python中isfile函数和isdir函数使用详解
Nov 29 Python
python如何获取apk的packagename和activity
Jan 10 Python
Idea安装python显示无SDK问题解决方案
Aug 12 Python
Python列表的索引与切片
Apr 07 Python
用Python仅20行代码编写一个简单的端口扫描器
Apr 08 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/03 咖啡文化
echo(),print(),print_r()之间的区别?
2006/11/19 PHP
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
2016/01/05 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
2019/08/12 PHP
javascript静态的url如何传递
2007/05/03 Javascript
Jquery实现图片左右自动滚动示例
2013/09/25 Javascript
iframe调用父页面函数示例详解
2014/07/17 Javascript
详谈JavaScript内存泄漏
2014/11/14 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
vuejs响应用户事件(如点击事件)
2017/03/14 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
动态内存分配导致影响Javascript性能的问题
2018/12/18 Javascript
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
2019/05/14 Javascript
layui 解决富文本框form表单提交为空的问题
2019/10/26 Javascript
JS中this的4种绑定规则详解
2020/02/04 Javascript
解决vant title-active-color与title-inactive-color不生效问题
2020/11/03 Javascript
原生微信小程序开发中 redux 的使用详解
2021/02/18 Javascript
python 分离文件名和路径以及分离文件名和后缀的方法
2018/10/21 Python
Windows下Python3.6安装第三方模块的方法
2018/11/22 Python
Django框架搭建的简易图书信息网站案例
2019/05/25 Python
python SVM 线性分类模型的实现
2019/07/19 Python
Python FTP文件定时自动下载实现过程解析
2019/11/12 Python
Python pip安装模块提示错误解决方案
2020/05/22 Python
python pandas dataframe 去重函数的具体使用
2020/07/20 Python
德国圣伯纳德草药屋:Kräuterhaus Sanct Bernhard(有中文站)
2018/08/05 全球购物
Nike挪威官网:Nike.com (NO)
2018/11/26 全球购物
Booking.com缤客中国:全球酒店在线预订网站
2020/05/03 全球购物
建筑工程实习自我鉴定
2013/09/19 职场文书
商务英语本科生的自我评价分享
2013/11/15 职场文书
大学自我评价
2014/02/12 职场文书
国际贸易专业自荐信
2014/06/10 职场文书
优秀应届本科生求职信
2014/07/19 职场文书
公安派出所所长四风问题个人对照检查材料
2014/10/04 职场文书
社区党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
使用css样式设计一个简单的html登陆界面的实现
2021/03/30 HTML / CSS