扣丁学堂Python视频教程Django框架中方法访问和查找详解

2018-07-13 10:57:24 59浏览

今天扣丁学堂给大家主要介绍关于Python培训之Django框架中方法的访问和查找,包括各种列表和字典的查找,是Python的Django框架使用的必备技巧,在Django模板中遍历复杂数据结构的关键是句点字符(.)。比如假设你要向模板传递一个Python字典。要通过字典键访问该字典的值,可使用一个句点,下面我们一起来看一下吧。



>>>fromdjango.templateimportTemplate,Context
>>>person={'name':'Sally','age':'43'}
>>>t=Template('{{person.name}}is{{person.age}}yearsold.')
>>>c=Context({'person':person})
>>>t.render(c)
u'Sallyis43yearsold.'

同样,也可以通过句点来访问对象的属性。比方说,Python的datetime.date对象有year、month和day几个属性,你同样可以在模板中使用句点来访问这些属性:

>>>fromdjango.templateimportTemplate,Context
>>>importdatetime
>>>d=datetime.date(1993,5,2)
>>>d.year
1993
>>>d.month
5
>>>d.day
2
>>>t=Template('Themonthis{{date.month}}andtheyearis{{date.year}}.')
>>>c=Context({'date':d})
>>>t.render(c)
u'Themonthis5andtheyearis1993.'

这个例子使用了一个自定义的类,演示了通过实例变量加一点(dots)来访问它的属性,这个方法适用于任意的对象。

>>>fromdjango.templateimportTemplate,Context
>>>classPerson(object):
...def__init__(self,first_name,last_name):
...self.first_name,self.last_name=first_name,last_name
>>>t=Template('Hello,{{person.first_name}}{{person.last_name}}.')
>>>c=Context({'person':Person('John','Smith')})
>>>t.render(c)
u'Hello,JohnSmith.'

点语法也可以用来引用对象的*方法*。例如,每个Python字符串都有upper()和isdigit()方法,你在模板中可以使用同样的句点语法来调用它们:

>>>fromdjango.templateimportTemplate,Context
>>>t=Template('{{var}}--{{var.upper}}--{{var.isdigit}}')
>>>t.render(Context({'var':'hello'}))
u'hello--HELLO--False'
>>>t.render(Context({'var':'123'}))
u'123--123--True'

注意这里调用方法时并*没有*使用圆括号而且也无法给该方法传递参数;你只能调用不需参数的方法。(我们将在本章稍后部分解释该设计观。)

最后,句点也可用于访问列表索引,例如:

>>>fromdjango.templateimportTemplate,Context
>>>t=Template('Item2is{{items.2}}.')
>>>c=Context({'items':['apples','bananas','carrots']})
>>>t.render(c)
u'Item2iscarrots.'

不允许使用负数列表索引。像{{items.-1}}这样的模板变量将会引发``TemplateSyntaxError``

Python列表类型

一点提示:Python的列表是从0开始索引。第一项的索引是0,第二项的是1,依此类推。

句点查找规则可概括为:当模板系统在变量名中遇到点时,按照以下顺序尝试进行查找:

字典类型查找(比如foo["bar"])

属性查找(比如foo.bar)

方法调用(比如foo.bar())

列表类型索引查找(比如foo[bar])

系统使用找到的第一个有效类型。这是一种短路逻辑。

句点查找可以多级深度嵌套。例如在下面这个例子中{{person.name.upper}}会转换成字典类型查找(person['name'])然后是方法调用(upper()):

>>>fromdjango.templateimportTemplate,Context
>>>person={'name':'Sally','age':'43'}
>>>t=Template('{{person.name.upper}}is{{person.age}}yearsold.')
>>>c=Context({'person':person})
>>>t.render(c)
u'SALLYis43yearsold.'

以上就是关于扣丁学堂Python视频教程Django框架中方法访问和查找详解介绍,希望对小伙伴们有所帮助,想要了解更多内容的小伙伴可以登录扣丁学堂官网咨询。扣丁学堂有专业的Python视频教程供大家在线学习,不仅有时俱进的课程体系还有专业的老师授课,定能让你轻松学习,高薪就业。扣丁学堂Python技术交流群:279521237。

扣丁学堂微信公众号



关注微信公众号获取更多学习资料



查看更多关于"Python开发资讯"的相关文章>

标签: Python视频教程 Python基础教程 Django框架 Python培训 Python开发工程师
扣丁微信
扣丁小程序
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号天丰利商场4层
京ICP备12003911号-6   Copyright © 2013 - 2018
返回顶部 返回顶部