django:使用Jinja2模板引擎

一,什么是jinja2模板引擎

jinja官网:

Jinja is a modern and designer-friendly templating language for Python,modelled after Django’s templates. It is fast, widely used and securewith the optional sandboxed template execution environment:

特点:
在这里插入图片描述
相对于DTL(官方文档,也可以参考这篇文章}而言,jinja2更加性能高效、文档可读性也更高。

二,安装与配置

1,安装

在这里插入图片描述
在这里插入图片描述

2,配置

1,直接在settings.py中添加模板配置就行,不必删除内置的DTL的配置,否则可能会导致内置功能因为没有模板引擎而无法使用。

TEMPLATES = [
    {
    
    
        'BACKEND': 'django.template.backends.jinja2.Jinja2',
        'DIRS': [
            os.path.join(BASE_DIR, 'index/templates'),
            os.path.join(BASE_DIR, 'templates'),
        ],
        'APP_DIRS': True,
        'OPTIONS': {
    
    
            'environment': 'messageBoard.jinja2.environment', 
        },
    },
    {
    
    
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        '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',
        ], },
    },
]

2,全局使用jinja2模板
在项目同名目录中添加jinja2.py文件,该文件用于将jinja2模板加载到整个项目。
文件中需要实例化Environment类。

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

3,验证是否能正常使用

views.py:
def index(request):
    context = {
    
    'value': "这是jinja2"}
    return render(request, 'index.html', locals())

index.html:
<!DOCTYPE html>
<html>
	<head>
	    <link rel="shortcut icon" href="#"/>
	    <title>Jinja2</title>
	</head>
	<body>
		<div>
		    {
    
    {
    
     context['value'] }}
		</div>
	</body>
</html>

在这里插入图片描述

三,模板语法

jinja2中文手册

猜你喜欢

转载自blog.csdn.net/dangfulin/article/details/108019226