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

在Python的Django框架中調(diào)用方法和處理無(wú)效變量

 更新時(shí)間:2015年07月15日 15:00:18   投稿:goldensun  
這篇文章主要介紹了在Python的Django框架中調(diào)用方法和處理無(wú)效變量的方法,是Django編程中的基礎(chǔ)操作,需要的朋友可以參考下

方法調(diào)用行為

方法調(diào)用比其他類型的查找略為復(fù)雜一點(diǎn)。 以下是一些注意事項(xiàng):

    在方法查找過(guò)程中,如果某方法拋出一個(gè)異常,除非該異常有一個(gè) silent_variable_failure 屬性并且值為 True ,否則的話它將被傳播。如果異常被傳播,模板里的指定變量會(huì)被置為空字符串,比如:

>>> t = Template("My name is {{ person.first_name }}.")
>>> class PersonClass3:
...   def first_name(self):
...     raise AssertionError, "foo"
>>> p = PersonClass3()
>>> t.render(Context({"person": p}))
Traceback (most recent call last):
...
AssertionError: foo

>>> class SilentAssertionError(AssertionError):
...   silent_variable_failure = True
>>> class PersonClass4:
...   def first_name(self):
...     raise SilentAssertionError
>>> p = PersonClass4()
>>> t.render(Context({"person": p}))
u'My name is .'

    僅在方法無(wú)需傳入?yún)?shù)時(shí),其調(diào)用才有效。 否則,系統(tǒng)將會(huì)轉(zhuǎn)移到下一個(gè)查找類型(列表索引查找)。

    顯然,有些方法是有副作用的,好的情況下允許模板系統(tǒng)訪問(wèn)它們可能只是干件蠢事,壞的情況下甚至?xí)l(fā)安全漏洞。

    例如,你的一個(gè) BankAccount 對(duì)象有一個(gè) delete() 方法。 如果某個(gè)模板中包含了像 {{ account.delete }}這樣的標(biāo)簽,其中`` account`` 又是BankAccount 的一個(gè)實(shí)例,請(qǐng)注意在這個(gè)模板載入時(shí),account對(duì)象將被刪除。

    要防止這樣的事情發(fā)生,必須設(shè)置該方法的 alters_data 函數(shù)屬性:

def delete(self):
  # Delete the account
delete.alters_data = True

    模板系統(tǒng)不會(huì)執(zhí)行任何以該方式進(jìn)行標(biāo)記的方法。 接上面的例子,如果模板文件里包含了 {{ account.delete }} ,對(duì)象又具有 delete()方法,而且delete() 有alters_data=True這個(gè)屬性,那么在模板載入時(shí), delete()方法將不會(huì)被執(zhí)行。 它將靜靜地錯(cuò)誤退出。

如何處理無(wú)效變量

默認(rèn)情況下,如果一個(gè)變量不存在,模板系統(tǒng)會(huì)把它展示為空字符串,不做任何事情來(lái)表示失敗。 例如:

>>> from django.template import Template, Context
>>> t = Template('Your name is {{ name }}.')
>>> t.render(Context())
u'Your name is .'
>>> t.render(Context({'var': 'hello'}))
u'Your name is .'
>>> t.render(Context({'NAME': 'hello'}))
u'Your name is .'
>>> t.render(Context({'Name': 'hello'}))
u'Your name is .'

系統(tǒng)靜悄悄地表示失敗,而不是引發(fā)一個(gè)異常,因?yàn)檫@通常是人為錯(cuò)誤造成的。 這種情況下,因?yàn)樽兞棵绣e(cuò)誤的狀況或名稱, 所有的查詢都會(huì)失敗。 現(xiàn)實(shí)世界中,對(duì)于一個(gè)web站點(diǎn)來(lái)說(shuō),如果僅僅因?yàn)橐粋€(gè)小的模板語(yǔ)法錯(cuò)誤而造成無(wú)法訪問(wèn),這是不可接受的。

相關(guān)文章

  • Python安裝Graphviz超詳細(xì)圖文教程

    Python安裝Graphviz超詳細(xì)圖文教程

    這篇文章主要介紹了Python安裝Graphviz超詳細(xì)教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02
  • Pandas數(shù)據(jù)分析多文件批次聚合處理實(shí)例解析

    Pandas數(shù)據(jù)分析多文件批次聚合處理實(shí)例解析

    這篇文章主要為大家介紹了Pandas數(shù)據(jù)分析多文件批次聚合處理實(shí)例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Python編寫(xiě)電話薄實(shí)現(xiàn)增刪改查功能

    Python編寫(xiě)電話薄實(shí)現(xiàn)增刪改查功能

    這篇文章主要為大家詳細(xì)介紹了Python編寫(xiě)電話薄實(shí)現(xiàn)增刪改查功能的相關(guān)資料,感興趣的朋友可以參考一下
    2016-05-05
  • 利用django創(chuàng)建一個(gè)簡(jiǎn)易的博客網(wǎng)站的示例

    利用django創(chuàng)建一個(gè)簡(jiǎn)易的博客網(wǎng)站的示例

    這篇文章主要介紹了利用django創(chuàng)建一個(gè)簡(jiǎn)易的博客網(wǎng)站的示例,幫助大家更好的學(xué)習(xí)和使用django框架,感興趣的朋友可以了解下
    2020-09-09
  • Python Image模塊基本圖像處理操作小結(jié)

    Python Image模塊基本圖像處理操作小結(jié)

    這篇文章主要介紹了Python Image模塊基本圖像處理操作,結(jié)合實(shí)例形式總結(jié)分析了Python圖形處理模塊Image常用的圖形處理函數(shù)、功能及相關(guān)使用技巧,需要的朋友可以參考下
    2019-04-04
  • Python的UTC時(shí)間轉(zhuǎn)換講解

    Python的UTC時(shí)間轉(zhuǎn)換講解

    今天小編就為大家分享一篇關(guān)于Python的UTC時(shí)間轉(zhuǎn)換講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • Python yield 的使用淺析

    Python yield 的使用淺析

    這篇文章主要為大家詳細(xì)介紹了Python yield的使用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • Pycharm報(bào)錯(cuò)Non-zero?exit?code?(2)的完美解決方案

    Pycharm報(bào)錯(cuò)Non-zero?exit?code?(2)的完美解決方案

    最近在使用pycharm安裝或升級(jí)模塊時(shí)出現(xiàn)了錯(cuò)誤,下面這篇文章主要給大家介紹了關(guān)于Pycharm報(bào)錯(cuò)Non-zero?exit?code?(2)的完美解決方案,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • python中kmeans聚類實(shí)現(xiàn)代碼

    python中kmeans聚類實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了python中kmeans聚類的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Python實(shí)現(xiàn)簡(jiǎn)單HTML表格解析的方法

    Python實(shí)現(xiàn)簡(jiǎn)單HTML表格解析的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)簡(jiǎn)單HTML表格解析的方法,涉及Python基于libxml2dom模塊操作html頁(yè)面元素的技巧,需要的朋友可以參考下
    2015-06-06

最新評(píng)論