Django模块之jinja2模版

摘要:
由于django默认模板引擎功能不齐全,速度慢,所以我们也可以在Django中使用jinja2,jinja2宣称比django默认模板引擎快10-20倍。Django主流的第三方APP基本上也都同时支持Django默认模板及jinja2,所以要用jinja2也不会有多少障碍。在配置文件中配置jinja2模版时,需要先将Django配置文件中自带的模版配置信息注释或删除。

Jinja2:是 Python 下一个被广泛应用的模板引擎,是由Python实现的模板语言,他的设计思想来源于 Django 的模板引擎,并扩展了其语法和一系列强大的功能,尤其是Flask框架内置的模板语言。

由于django默认模板引擎功能不齐全,速度慢,所以我们也可以在Django中使用jinja2, jinja2宣称比django默认模板引擎快10-20倍。

Django主流的第三方APP基本上也都同时支持Django默认模板及jinja2,所以要用jinja2也不会有多少障碍。

使用jinja2模版流程:

1. 安装第三方模块:

pip intall jinja2 -i 镜像源

大家在安装时,最好指定一下镜像源,否则国内墙太高爬过来多多少收都会有点慢的。

2. 配置jinja2:

  2.1 在Django项目中创建jinja2文件,并创建环境对象:

from jinja2 importEnvironment

def environment(**options):
    env = Environment(**options)

    return env

  2.2 在Django项目的配置文件中配置jinja2模版信息:

注意:

配置文件即Django项目信息的配置文件,一般命名为setting.py、dev.py、prop.py。

在配置文件中配置jinja2模版时,需要先将Django配置文件中自带的模版配置信息注释或删除。

TEMPLATES =[
    {
        'BACKEND': 'django.template.backends.jinja2.Jinja2',#修改1
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS':True,
        'OPTIONS':{
            'environment': 'jinja2_env.environment',#修改2
            'context_processors':[
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

3. 使用jinja2渲染html模版:

  3.1 编写视图,返回jinja2模板,并传递数据进行渲染。

classIndexView(View):
    
    defget(self, request):
        context ={
            'key':'value',
            'msg':'Hello Jinja2'}
        return render(request, 'index.html', context)

  3.2 在HTML模版中接收后端传递的jinja2语法的数据

{% if key%}
    <span class="error_tip">{{ key}}</span>{% endif %}

{% if msg%}
    <span class="error_tip">{{ msg}}</span>{% endif %}

4. jinja2的过滤器:

Django模块之jinja2模版第1张

5. 自定义jinja2过滤器

在jinja2环境文件中,进行自定义jinja2过滤器:

from jinja2 importEnvironment

def environment(**options):
    env = Environment(**options)

    #2.将自定义的过滤器添加到 环境中
    env.filters['do_listreverse'] =do_listreverse

    returnenv

#1.自定义过滤器
defdo_listreverse(li):
    if li == "B":
        return "哈哈"

免责声明:文章转载自《Django模块之jinja2模版》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇正则替换URL地址为链接地址实时计算,流数据处理系统简介与简单分析下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

facebook atc弱网环境搭建和踩坑总结

facebook atc介绍 Augmented Traffic Control(又名atc)是一种模拟网络状况的工具。由facebook开源,是一个允许开发人员控制设备与互联网连接的项目。atc可以模拟不同的网络条件,包括控制带宽,延迟,数据包丢失、数据包损坏、数据包重排序等几个因素都可以由atc来控制。atc运行在网关,可以控制连接到该网络的手机,设备...

Django之POST GET与前后端交互

Django之META与前后端交互 1 提交表单之GET 前端提交数据与发送 1)提交表单数据 2)提交JSON数据 后端的数据接收与响应 1)接收GET请求数据 2)接收POST请求数据 3)响应请求 GET 请求过程 前端通过ajax发起GET请求,json格式数据 var data = { "name": "test",...

django:开发一个下载图片的接口

html页面如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form a...

django前后分离-restful

前言REST是所有Web应用都应该遵守的架构设计指导原则。 Representational State Transfer,翻译是”表现层状态转化”。 REST核心: 资源, 状态转移, 统一接口 资源:是REST最明显的特征,是指对某类信息实体的抽象,资源是服务器上一个可命名的抽象概念,资源是以名词为核心来组织的,首先关注的是名词。 状态转移:是指客户端...

文件上传的几种方式_django

一、form组件形式上传文件 缺点:页面会刷新 后台: 前端:   二、ajax形式上传 能够实现页面不刷新上传 1、原生ajax上传,使用XMLHttpRequest对象来进行上传   流程:     生成XMLHttpRequest对象     对象编写数据open()     开始发送send()     编写对象的回调函数xhr.onreadys...

django程序在windows服务器上发布

django程序在windows服务器上发布 参考文献:https://www.cnblogs.com/djangocn/p/10227006.html 1.安装 IIS 和 GCI 打开服务器管理器,选择添加角色和功能,选择要添加的服务器角色(WEB服务器IIS),然后安装 IIS安装成功之后,然后安装CGI,再次选择添加角色和功能,找到之前安装的...