ImageVerifierCode 换一换
格式:PPT , 页数:28 ,大小:500KB ,
文档编号:6040329      下载积分:16 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-6040329.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(hyngb9260)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(jinja2简介 .ppt)为本站会员(hyngb9260)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

jinja2简介 .ppt

1、介绍介绍1API模板设计模板设计3实例介绍实例介绍42与与django比较比较5正文内容Jinja2是基于python的多功能的被广泛使用 的模板引擎是对django模板的补充(弥补django的不足)强大的自动HTML转换系统,可以阻止跨站脚本攻击模板继承机制(会对一些特殊字符自动转义)jinja2 jinja2 简单说明简单说明正文内容基本API用法:from Jinja2 import Template template=Template(Hello name !)template.render(name=world)Environment(模板环境)Environment是Jinja2

2、中的一个核心类,它的实例用来保存配置、全局对象,以及从本地文件系统或其它位置加载模板Environment 一般在一个应用中只创建一个 API API 介绍介绍正文内容创建Environment创建Environment实例:from jinja2 import PackageLoader,PrefixLoader,Environment,ChoiceLoader,FileSystemLoader,FunctionLoader jj=Environment(extensions=global_exts,loader=ChoiceLoader(loader_array),undefined=un

3、defined,autoescape=True)加载模板:template=jj.get_template(templatefile,globals=env:ActionConext.context()text=template.render(data)注意:加载过模板之后不能修改Enviroment实例 API API 介绍介绍正文内容class Environment(block_start_string=%,block_end_string=%,variable_start_string=,vari-able_end_string=,comment_start_string=#,comm

4、ent_end_string=#,line_statement_preix=None,trim_blocks=False,extensions=(),optimized=True,undefined=,finalize=None,autoescape=False,loader=None)参数解释:(参考jinja2文档)1、block_start_string,block_end_string,variable_start_string,variable_end_string,comment_start_string,comment_end_string:定义块,变量,注释 2、extensi

5、ons:Jinja的扩展对象列表,可以是导入路径的字符串或扩展类 3、loader:加载器类型 4、undefined:jinja2.runtime.Undefined或其子类的实例,用来描绘模板中的值为 undefined的变量 5、autoescape:XML/HTML自动转义,缺省为false API API 介绍介绍高级高级API API EnvirinmentEnvirinment类类正文内容API API 介绍介绍高级高级API TemplateAPI Template类类class Template()Template类可以被看作是一个编译过的模板文件,被用来产生目标文本Temp

6、late类的构建器参数和Environment类基本相同Template类与Environment类区别:创建Template实例需要模板文本参数(data),另外它不需要loader参数Template实例是一个不可变对象,即不能修改Template实例的属性。重要方法成员:render(*args,*kwargs):*args 元组,*kwargs字典例:template.render(knights=that say nih)template.render(knights:that say nih)generate(*args,*kwargs):此方法会一段一段的渲染模板,而不是一次性的

7、将整个模板渲染成目标文本。正文内容API API 介绍介绍高级高级API LoadersAPI Loaders加载器加载器 加载器负责从某些位置(比如本地文件系统)中加载模板,并维护在内存中的被编译过的模块:文件系统加载器-从本地文件系统中查找并加载模板class FileSystemLoader(searchpath,encoding=utf-8,cache_size=50,auto_reload=True)loader=FileSystemLoader(/path/to/templates)-searchpath是查找路径包加载器-从python包中加载模板class PackageLoa

8、der(package_name,package_path=templates,encoding=utf-8,cache_size=50,auto_reload=True)字典加载器-在mapping参数中明确指定模板文件名的路径(不常用)class DictLoader(mapping,cache_size=50,auto_reload=False)函数加载器-让指定的函数来返回模板文件的路径class FunctionLoader(load_func,cache_size=50,auto_reload=True)正文内容模板一般用.html或.xml表示jinja的语法主要参考Django

9、和python模板简单实例:My Webpage%for item in navigation%item.caption%endfor%My Webpage a_variable 模板设计模板设计正文内容变量:obj 访问变量属性:obj.attr,或objattr 过滤器:管道方式|内建过滤器检查器:在Jinja的if块里面检查一个变量是否符合某种条件%if name is defined%注释:#模板设计模板设计正文内容定义基础模板:base.html%block head%block title%endblock%-My Webpage%endblock%继承:%extends base

10、.html%当解析这个模板的时候,首先会本地化它的父模板.extends标签如果有则必须是子模板中的第一个标签模板设计模板设计 模板继承模板继承正文内容同一模板中不允许有重名的block在模板中,可以通过self获取自身的引用来调用指定名字的block内容,例如:%block title%endblock%self.block_name%block body%endblock%super block如果要在子模板中重写父模板的block,如果重写了父模板的block,又期望显示父模板的内容,可以调用super关键字。%block sidebar%Table Of Contents.super(

11、)%endblock%模板设计模板设计 模板继承模板继承正文内容for%for user in users%user.username|e%endfor%循环内部,可以访问特殊变量looploop.index 当前迭代的索引,从1开始算loop.first 相当于 loop.index=1.loop.last 相当于 loop.index=len(seq)-1 loop.length 序列的长度.loop.cycle可以接受两个字符串参数,如果当前循环索引是偶数,则显示第一个字符串,是奇数则显示第二个字符串,一般用于不同行着色class=loop.cycle(even,odd)模板设计模板设计

12、 结构控制结构控制正文内容if%if users%endif%elif,else%if kenny.sick%Kenny is sick.%elif kenny.dead%You killed Kenny!You bastard!%else%Kenny looks okay-so far%endif%模板设计模板设计 结构控制结构控制正文内容宏(Macro)%macro macro_name(args,kwargs)%作用与函数类似,可将常见代码封装起来,供其他模板调用,避免重复工作调用方法:macro_name(*args,*kwargs),返回宏定义输出1、在公共模板中定义宏,在其他模板中

13、import2、在模板中定义,并直接调用区别:在模板中定义的宏可以访问传给模板的上下文变量在其它模板中定义的宏则只能访问到传递给它的变量举例%macro input(name,value=,type=text,size=20)-%-endmacro%input(username)input(password,type=password)模板设计模板设计 结构控制结构控制(Macro)(Macro)正文内容宏内置属性(可以在宏调用时访问的特殊变量)varargs:相当于python的*argskwargs:相当于python的*kwargscaller:调用这个macro对象的call对象,该对

14、象是一个可调用对象,可以使用caller()的方式获取call中的自己输出.宏外部可调用属性(macro_name.field_name)宏其实是个对象,有一些属性可以在模板中使用name:宏的名称。input.name:string arguments:宏可以接受的参数,这个属性是一个元组 defaults:缺省值的元组 catch_kwargs:这个宏是否可以接受关键字参数 catch_varargs:这个宏是否可以接受索引位置参数 caller:是否有caller变量,可以被call标签调用 模板设计模板设计结构控制结构控制(Macro)Macro)正文内容某些情况下,需要将一个宏对象传

15、递到另外一个宏中使用调用形式:%call macro_name(*args,*kwargs)%endcall%举例%macro render_dialog(title,class=dialog)-%caller()%-endmacro%call render_dialog(Hello World)%endcall%在render_dialog中用 caller()将 call block中的内容显示出来模板设计模板设计结构控制结构控制(Call)Call)正文内容举例使用 caller()时,可以传入参数形式:%call(*args,*kwargs)macro_name(*args,*kwar

16、gs)%例:%macro dump_users(users)-%-for user in users%user.username|e caller(user)%-endfor%-endmacro%call(user)dump_users(list_of_user)%user.realname|e user.description%endcall%模板设计模板设计结构控制结构控制(Call)Call)正文内容赋值在块(block,macro,loop)外部赋值的变量可以被从模板中导出,提供给其它模板使用%set navigation=(index.html,Index),(about.html,

17、About)%include用include可以导入另外一个模板到当前模板中 语法:%include template_name%,没有结束符import%import template_name as new_name%from template_name import element_name as new_name%将一个模板导入入作为新的变量,跟模块的导入相似导入后可以使用.点号操作符获取其中定义的macro等元素默认不会传递当前的context到被引入的模板模板设计模板设计结构控制结构控制(Call)Call)正文内容一般类型字符串:“string”引号中间的就是字符串数值:42/4

18、2.23:直接用数值表示float,int列表:1,2,3,4:元组:(1,2,3,4):字典:one:1,two:2bool类型:true/false数学计算:+,-,*,/,*,/,%等逻辑运算符and,or,not其他操作in 判断元素是否在集合中,1 in 1,2,3|管道操作符,默认使用Apply调用一个方法 字符串连接()调用可调用对象.和 获取属性模板设计模板设计表达式表达式正文内容可以在jinja2的filters.py文件中查找模板设计模板设计内建过滤器内建过滤器正文内容views,url,templateviews.pyfrom nsfocus.web.action imp

19、ort*def pots_import(request):return render(vm_infos:vm_infos,vmhost_shows:vmhost_shows,pots_import.html)action.pyfrom nsfocus.web.template import jjdef render(data,html=None,view_func=None):try:if html:if not view_func:base=os.path.dirname(traceback.extract_stack()-20)return render_tpl(data,html,bas

20、e=base)else:return render_tpl(data,html,view_func=view_func)else:return render_json(data)实例介绍实例介绍正文内容action.pyfrom nsfocus.web.template import jjdef render_tpl(data,html,view_func=None,base=None):try:dataenv=ActionConext.context()template=jj.get_template(templatefile,globals=env:ActionConext.context

21、()text=template.render(data)if text and ord(text0)=0 xfeff:#删除bom头 text=text1:resp=HttpResponse(text)except TemplateNotFound,e:e.message=templatefile1 raise e resp.data=data return resptemplate.pyglobal jjjj=Environment(extensions=global_exts,loader=ChoiceLoader(loader_array),undefined=undefined,aut

22、oescape=True)实例介绍实例介绍正文内容pots_improt.html%extends base/index.html%block head%endblock%block body%call dialog(addHostDlg,250,_t(添加导入宿主机)%for import_pot in vmhost_shows%set host_ip_for_select=import_potimport_pot.find()+1:-1%import_pot%endfor%endcall%endblock%实例介绍实例介绍正文内容index.html%from base/macros.ht

23、ml import styles,scripts,image,dialog,combobox,image_src,icon,dict_icon%block title%endblock%scripts(prototype,ui)%if is_debug_mod()%DEBUG=true%endif%if errormsg is not defined -%macro errormsg(field=None)-%-endmacro%-endif%block head%endblock%block body%endblock%实例介绍实例介绍正文内容macros.html%macro dialog

24、(id,width,title)-%caller()if(typeof Dialog=undefined)alert(dialog.js未导入);new Dialog.Box(id,title,width:width );%-endmacro%实例介绍实例介绍正文内容Jinja2与django非常相似,许多语法相同,工作也相同 ,%jinja2没有 Django 模板的种种限制,比如不能调用函数,不能使用 Python 语句等.Jinja2 的性能比django高,渲染速度仅次于Mako(一种模板).方法调用:Django隐式调用,jinja2要指定调用对象django%for page in

25、 user.get_created_pages%endfor%Jinja2(允许给函数传递变量,宏也可以,但是django不可以)%for page in user.get_created_pages()%endfor%与与djangodjango比较比较正文内容条件判断Django:%ifequal foo bar%.%else%.%endifequal%Jinja2 可以像通常一样使用 if 语句和操作符来做比较(更近于python):%if foo=bar%.%else%.%endif%也可以使用多个elif分支:%if something%.%elif otherthing%.%eli

26、f foothing%.%else%.%endif%与与djangodjango比较比较正文内容过滤器参数因为不支持python语法,Django中需要根据需要自定义编写许多过滤器,而jinja2内建许多过滤器,方便直接调用调用方法:Django:items|join:,Jinja2:items|join(,),允许不同类型的参数(包括变量,且不止一种)标签扩展Django 模板需要自定义许多标签扩展%load comments%get_latest_comments 10 as latest_comments%for comment in latest_comments%.%endfor%Jinja2 使用一个 Python 表达式的特定子集,使用相当少的自定义扩展,且可以替代大多数的 Django 扩展%for comment in ments.latest(10)%#属性检索(查询操作不要放在模板中).%endfor%与与djangodjango比较比较

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|