欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

最好是用幾個例子來說明一下。 比如,假設你要向模板傳遞一個 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ù)的方法。 (我們將在本章稍后部分解釋該設計觀。)

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

>>> 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.'

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

Python 列表類型

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

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

  •     字典類型查找 (比如 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.'

相關文章

  • 深入了解Python中描述器的使用

    深入了解Python中描述器的使用

    Python描述器是Python編程語言中的一個重要特性,它提供了一種靈活且強大的機制來控制屬性訪問行為。在本文中,我們將詳細介紹Python描述器的概念、實現(xiàn)方式以及如何使用Python描述器來增強我們的Python程序
    2023-03-03
  • Python使用Flask框架獲取當前查詢參數(shù)的方法

    Python使用Flask框架獲取當前查詢參數(shù)的方法

    這篇文章主要介紹了Python使用Flask框架獲取當前查詢參數(shù)的方法,實例分析了query_string獲取查詢參數(shù)的技巧,需要的朋友可以參考下
    2015-03-03
  • Python移位密碼、仿射變換解密實例代碼

    Python移位密碼、仿射變換解密實例代碼

    凱撒密碼(Caesar 密碼)是最早的代換密碼,也是古典對稱密碼體制的典型代表,已經(jīng)初步體現(xiàn)出近代密碼系統(tǒng)的雛形,這篇文章主要給大家介紹了關于Python移位密碼、仿射變換解密的相關資料,需要的朋友可以參考下
    2021-06-06
  • 一文教你將Visual Studio Code變成Python開發(fā)神器

    一文教你將Visual Studio Code變成Python開發(fā)神器

    Visual Studio Code 是一款功能強大、可擴展且輕量級的代碼編輯器,經(jīng)過多年的發(fā)展,已經(jīng)成為 Python 社區(qū)的首選代碼編輯器之一。本文將為大家介紹一下如何將Visual Studio Code變成Python開發(fā)神器,需要的可以參考一下
    2022-07-07
  • tensorflow 2.1.0 安裝與實戰(zhàn)教程(CASIA FACE v5)

    tensorflow 2.1.0 安裝與實戰(zhàn)教程(CASIA FACE v5)

    這篇文章主要介紹了tensorflow 2.1.0 安裝與實戰(zhàn)(CASIA FACE v5),本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • 詳解Python locals()的陷阱

    詳解Python locals()的陷阱

    這篇文章主要介紹了詳解Python locals()的陷阱,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • 基于Python寫一個番茄鐘小工具

    基于Python寫一個番茄鐘小工具

    最近聽到朋友說在用番茄鐘,有點興趣也想下載一個來用用,后面仔細一想這玩意做起來也不難,索性自己順手寫一個算了,在這里也分享給大家了
    2022-12-12
  • Python異常處理try語句應用技巧實例探究

    Python異常處理try語句應用技巧實例探究

    異常處理在Python中是至關重要的,try-except是用于捕獲和處理異常的核心機制之一,本文就帶大家深入了解如何使用try-except,處理各種異常情況
    2024-01-01
  • Python自定義進程池實例分析【生產(chǎn)者、消費者模型問題】

    Python自定義進程池實例分析【生產(chǎn)者、消費者模型問題】

    這篇文章主要介紹了Python自定義進程池,結(jié)合實例分析了Python使用自定義進程池實現(xiàn)的生產(chǎn)者、消費者模型問題,需要的朋友可以參考下
    2016-09-09
  • python獲取指定網(wǎng)頁上所有超鏈接的方法

    python獲取指定網(wǎng)頁上所有超鏈接的方法

    這篇文章主要介紹了python獲取指定網(wǎng)頁上所有超鏈接的方法,涉及Python使用urllib2模塊操作網(wǎng)頁抓取的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04

最新評論