http://www.python-china.com/html/165.html
Django教程-Django中配置jinja2模板
-
jinja2介绍
Jinja2:是 Python 下一个被广泛应用的模板引擎,是由Python实现的模板语言,他的设计思想来源于 Django 的模板引擎,并扩展了其语法和一系列强大的功能,尤其是Flask框架内置的模板语言
由于django默认模板引擎功能不齐全,速度慢,所以我们也可以在Django中使用jinja2, jinja2宣称比django默认模板引擎快10-20倍。
Django主流的第三方APP基本上也都同时支持Django默认模板及jinja2,所以要用jinja2也不会有多少障碍。
-
1,安装jinja2模块
pip install jinja2
-
2,Django配置jinja2
2.1 在项目目录(manage.py同级目录)中创建 jinja2_env.py文件,并加入如下代码:
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
2.2在settings.py文件把原来的TEMPLATES代码改为如下代码:
''' 模板 参考:https://www.jianshu.com/p/571ba944b4e2 其实就是前台和后台的模板引擎分开,前台模板引擎是jinja2,后台的模板引擎是django默认的引擎 ''' TEMPLATES = [ # 默认的模板引擎,用来后台admin { 'BACKEND': 'django.template.backends.django.DjangoTemplates', # 调用模板的原理就是默认在每个应用下面搜索templates文件夹,如果'DIRS': ['']为空,则默认是admin下面的templates文件夹 'DIRS': [''], 'APP_DIRS': True, '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', ], }, }, # jinja2模板,用来前台显示 # 因为前台子应用的apps下面没有默认的templates文件夹,所以就用'DIRS': [os.path.join(BASE_DIR, 'templates')下的模板文件夹 # ], { 'BACKEND': 'django.template.backends.jinja2.Jinja2' , 'DIRS': [ os.path.join(BASE_DIR, 'templates'), ], 'APP_DIRS': True, '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':'my_jinja2.environment', }, }, ]
-
3,jinja2模板安装完成
jinja2模板的使用绝大多数和Django自带模板一样