美文网首页大数据 爬虫Python AI Sql扣丁学堂Python培训
扣丁学堂Python高级教程Django框架中方法访问和查找详解

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

作者: 994d14631d16 | 来源:发表于2018-07-13 10:56 被阅读2次

  今天扣丁学堂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高级教程Django框架中方法访问和查找详解

    本文链接:https://www.haomeiwen.com/subject/nskjpftx.html