当程序逐渐变大时,很多时候我们需要在javaScript和CSS代码中使用jinja2提供的变量值,甚至是控制语句。比如,通过传入模板的theme_color变量来为页面设置主题色彩,或是根据用户是否登陆来决定是否执行某个javaScript函数。

需要注意,只有使用render_template()传入的模板文件才会被渲染,如果把jinja2(模板引擎)代码写在单独的javaScript或CSS文件中,尽管你在HTML中引入了它们,但他们包含的jinja代码不会被执行。

下面是一些注意点:

行内/嵌入式javaScript/CSS

如果要在javaScript和CSS文件中使用jinja2代码,那么就在HTML中使用<style>和<script>标签定义这部分CSS和JavaScript代码

在这部分CSS和JavaScript代码中加入jinja2时,不用考虑编码时的语法错误,比如引号错误,因为jinja2会在渲染后被替换掉,所以只需要确保渲染后的代码正确即可。

定义为javaScript/CSS变量

对于想要在javaScript中获取的数据,如果时元素特定的数据,比如某个文章条目对应的id值,可以通过HTML元素的data-*属性存储。你可以自定义横线后的名称,作为元素上的自定义数据变量,比如data-id,data-username等,比如:

<span data-id="{{ user.id }}" data-username="{{ user.username }}">{{ user.username }}</span>

在javaScript中,可以使用DOM元素的dataset属性获取data-*属性值,比如

element.dataset.username,或是使用getAttribute()方法,

比如element.getAtrribute('data-username')

使用jQuery时,可以直接对jQuery对象调用data方法获取,比如$element.data(‘username’)

在HTML中,”data-*”被称为自定义数据属性,我们可以用它来存储自定义的数据供javaScript获取。

对于需要全局使用的数据,则可以在页面使用中嵌入式javaScript定义变量,如果没法定义为javaScript变量,那就考虑定义为函数,如:

<script type=”text/javascript”>
var foo = ‘{{ foo_variable }}’;
</script>

当在javaScript中插入很多jinja2语法时,应该讲程序转变为Web API,然后专心使用havaScrpt来编写客户端,后面会介绍Web API

CSS同理,有些时候需要将jinja2变量值传入CSS文件,比如希望将用户设置的主题颜色设置到对应的CSS规则中,或是需要将static目录下某个图片的URL传入CSS来设置为背景图片,除了将这部分CSS定义直接写到HTML中外,我们可以将这些值定义为CSS变量,如:

<style>
:root {
--theme-color:{{ theme_color }};
--background-url:{{ url_for('static', filename='background.jpg') }}
}
</style>

在CSS文件中,使用var()函数并传入变量名即可获取对应的变量值:

#foo {
color: var(--theme-color);
}
#bar{
background: var(--background-url);
}

flask模板应用-javaScript和CSS中jinja2的更多相关文章

  1. 如何javascript获取css中的样式

    obj.style.height只能获取行间样式,但是我们要怎么获取写在css文件中的样式呢? 首先我们要用一个新的方法currentStyle.这个方法由current和style两个单词组成意思是 ...

  2. javascript获取css中的样式值

    <body> <input type="button" id="btn" value="启动"/> <img ...

  3. flask模板的基本用法(定界符、模板语法、渲染模板),模板辅助工具(上下文、全局对象、过滤器、测试器、模板环境对象)

    flask模板 在动态web程序中,视图函数返回的HTML数据往往需要根据相应的变量(比如查询参数)动态生成. 当HTML代码保存到单独的文件中时,我们没法再使用字符串格式化或拼接字符串的当时在HTM ...

  4. Flask - 模板语言jinja2 和render_template高级用法

    目录 Flask - 模板语言jinja2 和render_template高级用法 一. 字典传递至前端 二. 列表传入前端Jinja2 模板的操作: 三. 大字典传入前端 Jinja2 模板 四. ...

  5. HTML文档中使用JavaScript和css

    HTML文档中使用JavaScript和css 引入css 内嵌式引入:将css代码写在HTML中的style标签里面 <!DOCTYPE html> <html> <h ...

  6. Flask中jinja2的应用

    Flask中jinja2的应用 # -*- coding: utf-8 -*- # @Time : 2019/9/24 17:29 # @Author : AnWen from flask impor ...

  7. Flask 模板语言

    Flask使用的是Jinja2模板引擎 举个例子: from flask import Flask, render_template app = Flask(__name__) @app.route( ...

  8. 一个CSS中Z-index的用法

    一个CSS中Z-index的用法 CSS教程:彻底掌握Z-index属性     大多数的CSS属性都很容易使用.常常,当您对标记语言的元素使用CSS属性时,产生的结果会随着您刷新页面而立即呈现.而另 ...

  9. jQuery基础与JavaScript与CSS交互-第五章

    目录 JavaScript框架种类及其优缺点 jQuery库 jQuery对象$ 掌握基本选择器 掌握过滤选择器 掌握表单选择器 RIA技术 常见的RIA技术 Ajax Sliverlight Fle ...

随机推荐

  1. 跨域的问题(nginx解决才是王道)

    跨域分为两类:一时get跨域,而是post跨域.常见的是三种: 一种是jsonp, $.ajax({ url: "http://127.0.0.1/~chenjiebin/mycode/ph ...

  2. 强制禁用gitlab的双因子认证:Two-Factor Authentication

    (一)问题描述: 此博客解决如下问题:禁用gitlab的双因子认证 禁用前,如图(此时,你在gitlab中什么也干不了) (二)思路分析: 百度了很多方法,都不可靠(如不可靠的说明:https://s ...

  3. cat 查看文件命令

    查看文件内容 [root@salt-server- .txt ada sada sadas -n 查看文件内容并显示行数 [root@salt-server- .txt ada sada sadas

  4. MySQL5.7配置基于GTID的复制

    MySQL5.7下配置GTID复制的方法: 修改主库和从库的配置文件,加入下列部分的配置项:主库:[mysqld]log-bin=mysql-binbinlog_format= ROWgtid-mod ...

  5. DBGridEh基本操作

    导出到excel等文件类型 uses DBGridEhImpExp//导出到文本文件 TDBGridEhExportAsText //导出到Unicode文本 TDBGridEhExportAsUni ...

  6. bootbox.js官方文档中文版

    bootbox.js官方文档中文版简介:Bootbox.js是一个小型的JavaScript库,基于Bootstrap模态框开发,用于创建可编程的对话框. 不像原生的alert等对话框,所有的Boot ...

  7. one order 理解

    1: one order core

  8. git flow 使用步骤

    Mac安装git-flow:brew install git-flow 克隆新代码:git clone git@gitlab.xxx.cn:abc/test.git 切换到远程的develop分支(很 ...

  9. 基于jquery ajax的多文件上传进度条

    效果图 前端代码,基于jquery <!DOCTYPE html> <html> <head> <title>主页</title> < ...

  10. ProxySQL(读写分离)部署

    proxySQL是MySQL的中间件产品,是灵活强大的代理层,实现读写分离,支持Query路由功能,支持动态指定某个SQL进行缓存,支持动态加载配置,故障切换和一些SQL 过滤功能 环境: 192.1 ...