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

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

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

方法調(diào)用行為

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

    在方法查找過程中,如果某方法拋出一個異常,除非該異常有一個 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 .'

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

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

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

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

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

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

如何處理無效變量

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

>>> 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ā)一個異常,因為這通常是人為錯誤造成的。 這種情況下,因為變量名有錯誤的狀況或名稱, 所有的查詢都會失敗。 現(xiàn)實(shí)世界中,對于一個web站點(diǎn)來說,如果僅僅因為一個小的模板語法錯誤而造成無法訪問,這是不可接受的。

相關(guān)文章

最新評論

江油市| 阿拉善左旗| 乌恰县| 西盟| 舞阳县| 罗定市| 万宁市| 东兰县| 三穗县| 大荔县| 石城县| 阿拉尔市| 龙江县| 若尔盖县| 梁山县| 鲁甸县| 沭阳县| 亳州市| 永宁县| 五原县| 济阳县| 江安县| 河曲县| 尤溪县| 通城县| 阳新县| 永泰县| 汝阳县| 普陀区| 漳平市| 临猗县| 江华| 安龙县| 修水县| 永定县| 永和县| 深泽县| 大关县| 宁安市| 青海省| 赤壁市|