>>t=Template("Mynameis{{person.first_name}}.")>>>classPersonClass3:...deffirst_name(self):..." />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

在Python的Django框架中調用方法和處理無效變量

系統 1750 0

方法調用行為

方法調用比其他類型的查找略為復雜一點。 以下是一些注意事項:

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

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


          

??? 僅在方法無需傳入參數時,其調用才有效。 否則,系統將會轉移到下一個查找類型(列表索引查找)。

??? 顯然,有些方法是有副作用的,好的情況下允許模板系統訪問它們可能只是干件蠢事,壞的情況下甚至會引發安全漏洞。

??? 例如,你的一個 BankAccount 對象有一個 delete() 方法。 如果某個模板中包含了像 {{ account.delete }}這樣的標簽,其中`` account`` 又是BankAccount 的一個實例,請注意在這個模板載入時,account對象將被刪除。

??? 要防止這樣的事情發生,必須設置該方法的 alters_data 函數屬性:

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


          

??? 模板系統不會執行任何以該方式進行標記的方法。 接上面的例子,如果模板文件里包含了 {{ account.delete }} ,對象又具有 delete()方法,而且delete() 有alters_data=True這個屬性,那么在模板載入時, delete()方法將不會被執行。 它將靜靜地錯誤退出。

如何處理無效變量

默認情況下,如果一個變量不存在,模板系統會把它展示為空字符串,不做任何事情來表示失敗。 例如:

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


          

系統靜悄悄地表示失敗,而不是引發一個異常,因為這通常是人為錯誤造成的。 這種情況下,因為變量名有錯誤的狀況或名稱, 所有的查詢都會失敗。 現實世界中,對于一個web站點來說,如果僅僅因為一個小的模板語法錯誤而造成無法訪問,這是不可接受的。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 4虎最新地址 | 999久久精品国产 | 成人做爰毛片免费视频 | 四虎最新永久免费视频 | 国产精品视_精品国产免费 国产精品视频2021 | 亚洲小视频 | 91视频欧美 | 亚洲va天堂va欧美ⅴa | 国产女主播在线 | 亚洲精美视频 | 毛片网站免费 | 奇米网7777| 成人一级免费视频 | 久久大香香蕉国产免费网vrr | 国精品一区二区三区 | 亚洲视频欧洲视频 | 久久精品国产一区二区三区肥胖 | 亚洲欧美日韩成人 | 久久国产精品影院 | 五十路一区二区三区视频 | 四虎最新网址 | 天天插天天插天天插 | 久久综合九色欧美综合狠狠 | 天天综合天天做 | 伊人影视频 | 成人毛片18岁女人毛片免费看 | 擼擼色在线看观看免费 | 91香蕉在线 | 亚洲精品中文字幕一区在线 | 国产片一区二区三区 | 国产一级淫片a视频免费观看 | 色综合天天综合网国产成人 | 久久综合五月 | 日本韩国欧美在线 | 中文字幕精品一区二区日本大胸 | 亚洲欧洲日韩国产aa色大片 | 精品久久久久久中文字幕女 | 酒色网站 | 一极毛片 | 日日狠狠久久偷偷四色综合免费 | 天天操天天碰 |