本机环境

操作系统: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的实现方法相关推荐

  1. pycharm 没有 python template languages_开发效率神器说说Pycharm的骚操作

    关于自动补全,已经是任何一个IDE,甚至是VIM(需要自行配置complete)都具备的功能,但也仅限于 变量自动补全 和 函数自动补全. 我今天谈一谈,Pycharm的自定义代码补全,会让你的开发效 ...

  2. Python全栈:Django模板

    文章目录 1 模板引擎介绍和选择 2 Django模板相关配置 templates相关配置 3 模板变量的使用 渲染静态图片 渲染 Python中的对象 4 模板标签的使用 循环控制 条件控制 模板注 ...

  3. php yii 模板引擎,模板引擎(Template Engines)

    使用模板引擎(Using template engines) 默认情况下,Yii 使用 PHP 作为其默认的模板引擎语言,但是,你可以配置 Yii 以扩展的方式支持其他的渲染引擎, 比如 Twig 或 ...

  4. python html模板引擎_flask入门2-模板引擎

    day2模板 模板引擎 说明:模板文件就是按照一定的规则书写的展示效果的HTML文件 模板引擎就是负责按照指定规则进行替换的工具 模板引擎选择jinja2 一.渲染模板的方法 将渲染的模板进行返回 r ...

  5. JavaScript模板引擎Template.js基本使用详解

    template.js是一款JavaScript模板引擎,提供一套模板语法,简单好用,开发者可以写一个模板区块,每次传入的数据,生成对应数据产生的HTML片段,渲染不同的效果.官网:简洁语法版 htt ...

  6. html转义成velocity,改造Velocity模板引擎让$[!]{}输出默认进行html转义,并增加$#{}语法支持不转义输出...

    一直以来在项目中使用Apache Velocity模板引擎作为视图层输出,为了解决XSS漏洞,需要对输出到页面的内容进行HTML转义,我一般采用2种方式实现: 使用过滤器 Filter,在其中进行 H ...

  7. html jquery 模板引擎,jquery template.js前端模板引擎

    作为现代应用,ajax的大量使用,使得前端工程师们日常的开发少不了拼装模板,渲染模板 在刚有web的时候,前端与后端的交互,非常直白,浏览器端发出URL,后端返回一张拼好了的HTML串.浏览器对其进行 ...

  8. Web框架——Flask系列之Jinja2模板引擎(二)

    Jinja2模板引擎简介 一.Jinja2模板概述 用来展示数据的html页面,这个过程也通常称为渲染,属于Jinja2的功能 使用模板的好处: 视图函数只负责业务逻辑和数据处理(业务逻辑方面) 而模 ...

  9. Flask 中的Jinja2模板引擎

    Flask 中的Jinja2模板引擎 在 Web 项目中,前端的显示效果是通过 HTML 语言来实现的,后端的视图函数将数据或模板文件返回给前端. 前端接收到后端返回的结果后,需要通过模板引擎来渲染页 ...

最新文章

  1. IOS初级:UIAlertController
  2. 谷歌系自动驾驶公司再获4千万美元融资,核心产品是仿真软件
  3. 基于Open WebRTC Toolkit(OWT)的8K全景视频低延时直播系统
  4. 图像处理中的傅里叶变换和频率域滤波概念
  5. java 对象 序列化 文件中_如何将一个java对象序列化到文件里
  6. Julia : Set or Array ?
  7. Linux系统GCC常用命令和GCC编译过程描述
  8. 服务器显示器超频,电脑显示器超频怎么恢复正常 电脑显示器超频是什么原因...
  9. python爬虫学习教程,短短25行代码批量下载豆瓣妹子图片
  10. 计算机组成原理复习笔记
  11. python opencv 修改局部区域像素值
  12. matlab solve和subs,【MATLAB】matlab中的subs()函数和solve()函数用法
  13. mac 重置mysql root密码_MAC 重置MySQL root 密码
  14. 微信小程序分析送积分功能如何实现_微信小程序如何建立积分系统?
  15. Vue 适配iOS、Android顶部状态栏(沉浸式,混合APP开发)
  16. 调用marathon rest API
  17. 没有独立显卡没有NVIDIA 如何安装pytorch
  18. 免费App开发解决方案 一键生成App
  19. Kindle4RSS - 好用的Kindle RSS新闻文章推送服务
  20. Mysql数据库详细教程

热门文章

  1. python内置函数zip
  2. windows下设置PHP环境变量
  3. Codeforces Round #372 (Div. 1) B. Complete The Graph
  4. 视频质量评价PSNR
  5. cj20n sap 报错未知列的名称_SAP,PS模块配置和操作手册
  6. active mq topic消费后删除_RabbitMQ重复消费,顺序消费,消息丢失如何解决
  7. 比亚迪王传福评价小米造车
  8. android基于plt/got的hook原理
  9. C++ vector简单demo
  10. Ubuntu安装ssh server及分配用户