国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

更換Django默認的模板引擎為jinja2的實現方法

2020-02-15 21:32:37
字體:
來源:轉載
供稿:網友

本機環境

操作系統: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_storagefrom django.urls import reversefrom jinja2 import Environmentdef 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 }}

<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">

四則運算

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的語法

循環索引

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 松桃| 洛宁县| 新丰县| 万盛区| 丽江市| 溧阳市| 新营市| 婺源县| 宁津县| 津南区| 德安县| 巴林右旗| 高陵县| 兴隆县| 宝山区| 东乡县| 石屏县| 江永县| 琼海市| 鸡西市| 寻甸| 石嘴山市| 盈江县| 锡林浩特市| 孟津县| 长岭县| 敦化市| 柏乡县| 南宁市| 吉木乃县| 永丰县| 伊金霍洛旗| 海原县| 买车| 改则县| 广南县| 宁海县| 鸡西市| 宝清县| 始兴县| 霍城县|