python学习笔记-Day17(jinja2)
jinja2 是一个python的功能齐全的模板引擎,它有完整的unicode支持,一个可选的集成沙箱执行环境。它速度快,被广泛使用。使用jinja2 至少需要python2.4
特性
沙箱中执行
强大的HTML自动转义系统,保护系统免受跨站脚本***(xss)
模板继承
及时编译最优的python代码
可选提前编译模板的时间
易于调试,异常的的行数直接指向模板中对应的行
可配置的语法
安装
tar文件安装
tar fielname.tar.gz
进入解压后的文件目录
然后sudo python setup.py install
pip 安装
sudo pip install jinja2
开发版安装
git clone git://github.com/mitsuhiko/jinja2.git
cd jinja2
ln -s jinja2 /usr/lib/python2.X/site-packages
使用方法
>>> from jinja2 import Template
>>> template = Template('Hello ` name `!')
>>> template.render(name='John Doe')
u'Hello John Doe!'
另外一个示例
cat func.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from jinja2 import Template
def index():f = open('index.html')result = f.read()template = Template(result)data = template.render(name='John Doe', user_list=['alex', 'eric'])return data.encode('utf-8')
newData = index()
print newData
注意 #jinja2 默认返回的字符串的编码格式为unicode 需要转换为utf8后使用
cat index.html
<!DOCTYPE html>
<html>
<head lang="en"><meta charset="UTF-8"><title></title>
</head>
<body><h1>`name`</h1><ul>{% for item in user_list %}<li>`item`</li>{% endfor %}</ul>
</body>
</html>
python func.py
<!DOCTYPE html>
<html>
<head lang="en"><meta charset="UTF-8"><title></title>
</head>
<body><h1>John Doe</h1><ul><li>alex</li><li>eric</li></ul>
</body>
</html>
使用模板引擎可以使用for if/else 等流程控制语句 ,依照模板引擎的语法规则,其内部会对特定的语法进行替换.
一个例子
web/templates/master/m1.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title></title><link rel="stylesheet" href="/static/css/comm.css"/>{% block css %}{% endblock %} #一般这里定义css文件 </head> <body><div class="header">Top</div><div class="body"><div class="left">MENU</div><div class="content">{% block content %} # 其他文件在导入m1.html的时候 会替换这里的内容 , 本例中的/son1.html 的 {% block content %} 会替换这里的内容{% endblock %}</div></div>{% block js %}{% endblock %} #一般这里定义js文件 </body> </html>
web/templates/include/include1.html
<h1>Include</h1> <input type="text"> <input type="text">
web/templates/home.html
{% load customDef %} #这里使用了 自定义标签,对应customDef.py ; customDef 为文件名
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title></title>
</head>
<body><h1>What is your name?</h1><h1>`name`</h1><h1>`age`</h1>{% for item in user_list %} #开始循环<h3>item</h3> 循环的每一项{% endfor %} 结束循环{% myTag01 1 2 %} #这里使用了 自定义标签,对应customDef.py
</body>
</html>
web/templates/son1.html
{% extends "master/m1.html" %} # extends 只用一次 其他的使用include 导入文件;master/m1.html 为模板文件, son1.html 的内容会继承模板文件的内容
{% block content %}this is a son page!{% include "include/include1.html" %} #include 导入文件
{% endblock %}
web/app01/templatetags/customDef.py
#!/usr/bin/env python # -*- coding:utf-8 -*-from django import template from django.utils.safestring import mark_safe from django.template.base import resolve_variable,Node,TemplateSyntaxErrorregister = template.Library()@register.simple_tag() def myTag01(v1,v2): #自定义标签的处理方式return v1+v2
web/app01/views.py
#!/usr/bin/env python # -*- coding:utf-8 -*- # Create your views here.from django.shortcuts import HttpResponse from django.shortcuts import renderdef home(request):# return HttpResponse("ok")dic = {"name":"allen","age":12}return render(request,"home.html",dic)def son(request):return render(request,"son1.html")
转载于:https://blog.51cto.com/timesnotes/1748411
python学习笔记-Day17(jinja2)相关推荐
- Python学习笔记:Day15 部署Web App
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- Python学习笔记:Day5 编写web框架
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- Python学习笔记:Day1-2 开发环境搭建
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- Python学习笔记:web开发3
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- Python学习笔记:第三方模块2
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- [python教程入门学习]python学习笔记(CMD执行文件并传入参数)
本文章向大家介绍python学习笔记(CMD执行文件并传入参数),主要包括python学习笔记(CMD执行文件并传入参数)使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋 ...
- python学习笔记之编写readConfig读写配置文件
python学习笔记之编写readConfig读写配置文件_weixin_34055910的博客-CSDN博客
- Python学习笔记(十一)
Python学习笔记(十一): 生成器,迭代器回顾 模块 作业-计算器 1. 生成器,迭代器回顾 1. 列表生成式:[x for x in range(10)] 2. 生成器 (generator o ...
- Python学习笔记一简介及安装配置
Python学习笔记一 参考教程:廖雪峰官网https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e54 ...
最新文章
- 第一次,我们在人工神经网络中发现了「真」神经元
- CVPR 2020丨动态卷积:自适应调整卷积参数,显著提升模型表达能力
- 刚发现 emacs的新的go-mode
- div:给div加滚动栏 div的滚动栏设置
- C++ 算法设计 最大子序和问题
- Linux视频切片m3u8,Rtmp转m3u8视频切片系统及方法
- matlab和python的语言_四大机器学习编程语言对比:R、Python、MATLAB、Octave
- DVB开发之OTA升级
- CString、string、char*的综合比较
- php数据库之mysql (where 、order By 、 Update)
- python 连接mysql视频教程_Python操作MySQL视频教程
- 什么是高精准IP地址定位——IP问问
- unity游戏框架学习-资源管理
- Activiti7入门,Activiti7 数据库表结构详细解析
- python 实现A星算法
- python调用百度地图,通过经纬度定位
- 色彩模型(HSB,RGB,CMYK,YIQ,YUV)
- 计算机u盘病毒清除方式,彻底清除u盘病毒有什么方法呢
- pandas基础用法详解
- R语言survival包Surv函数创建生存对象、建立Cox回归模型(包含所有协变量)比较不同治疗方法生存率的差异、drop1函数计算cox回归模型自变量似然比检验值、删除冗余变量重新构建cox模型
热门文章
- java php mysql_系统学习javaweb13----MYSQL学习(使用PHP、SQL)1
- mysql查询某一时间段之后数据的sql_mysql进阶(十九)SQL语句如何精准查找某一时间段的数据...
- zigzag扫描matlab,ZIGZAG扫描的MATLAB实现 | 学步园
- 大众点评字体_点评里的神笔马良!她的美食笔记会让你惊掉下巴!
- 关于MM32-Link Programmer软件修改建议
- 第十六届智能车竞赛参赛队伍提问-6-11
- 需要更换手机了:由 TensorFlow Lite 构建无人驾驶微型汽车
- 表贴3.3V稳压芯片 PL3500测试 低压差线性稳压器
- AI电磁组中的NN到底有什么优势?
- python在线编辑器编译excel_python在线编译器的简单原理及简单实现代码