最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django框架中方法的訪問和查找

 更新時間:2015年07月15日 12:09:29   投稿:goldensun  
這篇文章主要介紹了Django框架中方法的訪問和查找,包括各種列表和字典的查找,是Python的Django框架使用的必備技巧,需要的朋友可以參考下

在 Django 模板中遍歷復(fù)雜數(shù)據(jù)結(jié)構(gòu)的關(guān)鍵是句點字符 (.)。

最好是用幾個例子來說明一下。 比如,假設(shè)你要向模板傳遞一個 Python 字典。 要通過字典鍵訪問該字典的值,可使用一個句點:

>>> from django.template import Template, Context
>>> person = {'name': 'Sally', 'age': '43'}
>>> t = Template('{{ person.name }} is {{ person.age }} years old.')
>>> c = Context({'person': person})
>>> t.render(c)
u'Sally is 43 years old.'

同樣,也可以通過句點來訪問對象的屬性。 比方說, Python 的 datetime.date 對象有 year 、 month 和 day 幾個屬性,你同樣可以在模板中使用句點來訪問這些屬性:

>>> from django.template import Template, Context
>>> import datetime
>>> d = datetime.date(1993, 5, 2)
>>> d.year
1993
>>> d.month
5
>>> d.day
2
>>> t = Template('The month is {{ date.month }} and the year is {{ date.year }}.')
>>> c = Context({'date': d})
>>> t.render(c)
u'The month is 5 and the year is 1993.'

這個例子使用了一個自定義的類,演示了通過實例變量加一點(dots)來訪問它的屬性,這個方法適用于任意的對象。

>>> from django.template import Template, Context
>>> class Person(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, John Smith.'

點語法也可以用來引用對象的* 方法*。 例如,每個 Python 字符串都有 upper() 和 isdigit() 方法,你在模板中可以使用同樣的句點語法來調(diào)用它們:

>>> from django.template import Template, 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'

注意這里調(diào)用方法時并* 沒有* 使用圓括號 而且也無法給該方法傳遞參數(shù);你只能調(diào)用不需參數(shù)的方法。 (我們將在本章稍后部分解釋該設(shè)計觀。)

最后,句點也可用于訪問列表索引,例如:

>>> from django.template import Template, Context
>>> t = Template('Item 2 is {{ items.2 }}.')
>>> c = Context({'items': ['apples', 'bananas', 'carrots']})
>>> t.render(c)
u'Item 2 is carrots.'

不允許使用負(fù)數(shù)列表索引。 像 {{ items.-1 }} 這樣的模板變量將會引發(fā)`` TemplateSyntaxError``

Python 列表類型

一點提示: Python的列表是從0開始索引。 第一項的索引是0,第二項的是1,依此類推。

句點查找規(guī)則可概括為: 當(dāng)模板系統(tǒng)在變量名中遇到點時,按照以下順序嘗試進(jìn)行查找:

  •     字典類型查找 (比如 foo["bar"] )
  •     屬性查找 (比如 foo.bar )
  •     方法調(diào)用 (比如 foo.bar() )
  •     列表類型索引查找 (比如 foo[bar] )

系統(tǒng)使用找到的第一個有效類型。 這是一種短路邏輯。

句點查找可以多級深度嵌套。 例如在下面這個例子中 {{person.name.upper}} 會轉(zhuǎn)換成字典類型查找( person['name'] ) 然后是方法調(diào)用( upper() ):

>>> from django.template import Template, Context
>>> person = {'name': 'Sally', 'age': '43'}
>>> t = Template('{{ person.name.upper }} is {{ person.age }} years old.')
>>> c = Context({'person': person})
>>> t.render(c)
u'SALLY is 43 years old.'

相關(guān)文章

最新評論

威海市| 哈尔滨市| 亚东县| 连云港市| 大荔县| 镇安县| 炎陵县| 徐汇区| 安溪县| 和龙市| 宣武区| 江津市| 方城县| 青龙| 融水| 英山县| 垫江县| 辽中县| 元朗区| 特克斯县| 临猗县| 萝北县| 临桂县| 井研县| 金溪县| 枞阳县| 喀喇| 娄烦县| 定南县| 抚远县| 七台河市| 靖远县| 宜川县| 桃园县| 科尔| 宁蒗| 仪征市| 阿鲁科尔沁旗| 灵寿县| 陆良县| 堆龙德庆县|