python template languages_更换Django默认的模板引擎为jinja2的实现方法
本机环境
操作系统:fedora24
python版本:3.5
Django版本:1.11.1
jinja2版本:2.9.6
为何要更换
DTL
先来谈谈Django的模板引擎,找了下,并没有一个确定的名字,就简单的叫Django Templates Language(DTL),中文就叫Django模板语言。使用中,大家会发现很多局限性,最明显的就是四则运算。就只能加减,乘除都不支持。另外还有判断相等,不能直接if,要用ifequal。确实不太方便。还有一点,DTL很慢,jinja2宣称比DTL快10-20倍。
jinja2
先来安装,pip3 install jinja2。
配置:从Django1.8开始,支持第三方模板引擎,可以很容易的配置到。首先,在你的项目下建立一个jinja2_env.py,内容如下:
#from __future__ import absolute_import # 如果是py2就取消这行的注释
from django.contrib.staticfiles.storage import staticfiles_storage
from django.urls import reverse
from jinja2 import Environment
def environment(**options):
env = Environment(**options)
env.globals.update({
'static': staticfiles_storage.url,
'url': reverse,
})
return env
然后在setting.py设置
TEMPLATES = [
{
'BACKEND': 'django.template.backends.jinja2.Jinja2', ***1
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': False, ***2
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
'environment': 'APP_NAME.jinja2_env.environment', ***3
},
},
]
标***的是需要修改的地方。
- ***1:这里指定引擎为jinja2
- ***2:这里确保不去app下的子目录的jinja2目录找模板
- ***3:配置环境,上边创建的py文件
这样一来,你的默认模板引擎就添加好了。
更换到jinja2要做的一些改变
切换你的ide模板语言
例如我使用pycharm,在File-Settings-Language & Frameworks-Python Template Languages中修改。
这一步不是必要,但是错误的支持模板语言会让你认为正确的标签是错误的。
csrf_token
Django:
{% csrf_token %}
jinja2
{{ csrf_input }}
或
四则运算
Django:只支持加减
{{ var | add:-1 }}
jinja2:四则运算
{{ var + 1 }}
if条件判断是否相等
Django:
{% ifequal vara varb %}do sometings{% endifequal %} #相等
{% ifnotequal vara varb %}do sometings{% endifnotequal %} #不等
jinja2:
{% if vara == varb %}do sometings{% endif %} #相等
{% if vara != varb %}do sometings{% endif %} #不等
说起来jinja2更符合python的语法
循环索引
python template languages_更换Django默认的模板引擎为jinja2的实现方法相关推荐
- pycharm 没有 python template languages_开发效率神器说说Pycharm的骚操作
关于自动补全,已经是任何一个IDE,甚至是VIM(需要自行配置complete)都具备的功能,但也仅限于 变量自动补全 和 函数自动补全. 我今天谈一谈,Pycharm的自定义代码补全,会让你的开发效 ...
- Python全栈:Django模板
文章目录 1 模板引擎介绍和选择 2 Django模板相关配置 templates相关配置 3 模板变量的使用 渲染静态图片 渲染 Python中的对象 4 模板标签的使用 循环控制 条件控制 模板注 ...
- php yii 模板引擎,模板引擎(Template Engines)
使用模板引擎(Using template engines) 默认情况下,Yii 使用 PHP 作为其默认的模板引擎语言,但是,你可以配置 Yii 以扩展的方式支持其他的渲染引擎, 比如 Twig 或 ...
- python html模板引擎_flask入门2-模板引擎
day2模板 模板引擎 说明:模板文件就是按照一定的规则书写的展示效果的HTML文件 模板引擎就是负责按照指定规则进行替换的工具 模板引擎选择jinja2 一.渲染模板的方法 将渲染的模板进行返回 r ...
- JavaScript模板引擎Template.js基本使用详解
template.js是一款JavaScript模板引擎,提供一套模板语法,简单好用,开发者可以写一个模板区块,每次传入的数据,生成对应数据产生的HTML片段,渲染不同的效果.官网:简洁语法版 htt ...
- html转义成velocity,改造Velocity模板引擎让$[!]{}输出默认进行html转义,并增加$#{}语法支持不转义输出...
一直以来在项目中使用Apache Velocity模板引擎作为视图层输出,为了解决XSS漏洞,需要对输出到页面的内容进行HTML转义,我一般采用2种方式实现: 使用过滤器 Filter,在其中进行 H ...
- html jquery 模板引擎,jquery template.js前端模板引擎
作为现代应用,ajax的大量使用,使得前端工程师们日常的开发少不了拼装模板,渲染模板 在刚有web的时候,前端与后端的交互,非常直白,浏览器端发出URL,后端返回一张拼好了的HTML串.浏览器对其进行 ...
- Web框架——Flask系列之Jinja2模板引擎(二)
Jinja2模板引擎简介 一.Jinja2模板概述 用来展示数据的html页面,这个过程也通常称为渲染,属于Jinja2的功能 使用模板的好处: 视图函数只负责业务逻辑和数据处理(业务逻辑方面) 而模 ...
- Flask 中的Jinja2模板引擎
Flask 中的Jinja2模板引擎 在 Web 项目中,前端的显示效果是通过 HTML 语言来实现的,后端的视图函数将数据或模板文件返回给前端. 前端接收到后端返回的结果后,需要通过模板引擎来渲染页 ...
最新文章
- IOS初级:UIAlertController
- 谷歌系自动驾驶公司再获4千万美元融资,核心产品是仿真软件
- 基于Open WebRTC Toolkit(OWT)的8K全景视频低延时直播系统
- 图像处理中的傅里叶变换和频率域滤波概念
- java 对象 序列化 文件中_如何将一个java对象序列化到文件里
- Julia : Set or Array ?
- Linux系统GCC常用命令和GCC编译过程描述
- 服务器显示器超频,电脑显示器超频怎么恢复正常 电脑显示器超频是什么原因...
- python爬虫学习教程,短短25行代码批量下载豆瓣妹子图片
- 计算机组成原理复习笔记
- python opencv 修改局部区域像素值
- matlab solve和subs,【MATLAB】matlab中的subs()函数和solve()函数用法
- mac 重置mysql root密码_MAC 重置MySQL root 密码
- 微信小程序分析送积分功能如何实现_微信小程序如何建立积分系统?
- Vue 适配iOS、Android顶部状态栏(沉浸式,混合APP开发)
- 调用marathon rest API
- 没有独立显卡没有NVIDIA 如何安装pytorch
- 免费App开发解决方案 一键生成App
- Kindle4RSS - 好用的Kindle RSS新闻文章推送服务
- Mysql数据库详细教程
热门文章
- python内置函数zip
- windows下设置PHP环境变量
- Codeforces Round #372 (Div. 1) B. Complete The Graph
- 视频质量评价PSNR
- cj20n sap 报错未知列的名称_SAP,PS模块配置和操作手册
- active mq topic消费后删除_RabbitMQ重复消费,顺序消费,消息丢失如何解决
- 比亚迪王传福评价小米造车
- android基于plt/got的hook原理
- C++ vector简单demo
- Ubuntu安装ssh server及分配用户