这里写目录标题
1、jinja2介绍
Jinja2:是 Python 下⼀个被⼴泛应⽤的模板引擎,是由Python实现的模板语⾔,他的设计思想来源于 Django 的模板引擎,并扩展了其语法和⼀系列强⼤的功能,尤其是Flask框架内置的模板语⾔
由于django默认模板引擎功能不⻬全,速度慢,所以我们也可以在Django中使⽤jinja2, jinja2宣称⽐django默认模板引擎快10-20倍。
Django主流的第三⽅APP基本上也都同时⽀持Django默认模板及jinja2,所以要⽤jinja2也不会有多少障碍。
2、安装jinja2模块
pip install jinja2
3、Django配置jinja2
1.在应⽤包中创建 jinja2_env.py ⽂件
2.编辑文件
from jinja2 import Environment
def environment(**options):
env = Environment(**options)
return env
3.在settings.py⽂件中进行jinja2配置
特别注意:原配置不能删除
TEMPLATES = [
#jinja2模板的配置
{
'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',
'film.mycontext.getsname'
],
'environment':'film.jinja2_env.environment'
},
},
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'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',
'film.mycontext.getsname'
],
},
},
]
4、pycharm中的setting下选择Jinja2
5、Jinja2模板的使⽤绝⼤多数和Django⾃带模板⼀样
6、测试
路由
urlpatterns = [
path('register/',views.UserView.as_view()),
]
视图
class UserView(View):
def delete(self,request):
context={
'names':['aa','bb','cc','dd']
}
return render(request,'film/home.html',context)
模板文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
{% for name in names %}
<li>{{ loop.index }}---{{ name }}</li>
{% endfor %}
</ul>
</body>
</html>
响应
7.Django模板和Jinja2模板区别
1、访问列表或者字典值的时候:
- Django: {{ list.index }} {{ dict.key }}
- Jinja2: {{ list[index] }} {{ dict[‘key’]}}
2、for循环中的局部变量(数据下标)
- Django: forloop.counter0
- Jinja2 : loop.index0
3、空列表
- Django: {% empty %}
- Jinja2 : {% else %}