Django中使用locals()函數(shù)的技巧
對(duì) current_datetime 的一次賦值操作:
def current_datetime(request):
now = datetime.datetime.now()
return render_to_response('current_datetime.html', {'current_date': now})
很多時(shí)候,就像在這個(gè)范例中那樣,你發(fā)現(xiàn)自己一直在計(jì)算某個(gè)變量,保存結(jié)果到變量中(比如前面代碼中的 now ),然后將這些變量發(fā)送給模板。 尤其喜歡偷懶的程序員應(yīng)該注意到了,不斷地為臨時(shí)變量和臨時(shí)模板命名有那么一點(diǎn)點(diǎn)多余。 不僅多余,而且需要額外的輸入。
如果你是個(gè)喜歡偷懶的程序員并想讓代碼看起來更加簡(jiǎn)明,可以利用 Python 的內(nèi)建函數(shù) locals() 。它返回的字典對(duì)所有局部變量的名稱與值進(jìn)行映射。 因此,前面的視圖可以重寫成下面這個(gè)樣子:
def current_datetime(request):
current_date = datetime.datetime.now()
return render_to_response('current_datetime.html', locals())
在此,我們沒有像之前那樣手工指定 context 字典,而是傳入了 locals() 的值,它囊括了函數(shù)執(zhí)行到該時(shí)間點(diǎn)時(shí)所定義的一切變量。 因此,我們將 now 變量重命名為 current_date ,因?yàn)槟遣攀悄0逅A(yù)期的變量名稱。 在本例中, locals() 并沒有帶來多 大 的改進(jìn),但是如果有多個(gè)模板變量要界定而你又想偷懶,這種技術(shù)可以減少一些鍵盤輸入。
使用 locals() 時(shí)要注意是它將包括 所有 的局部變量,它們可能比你想讓模板訪問的要多。 在前例中, locals() 還包含了 request 。對(duì)此如何取舍取決你的應(yīng)用程序。
相關(guān)文章
python多版本工具miniconda的配置優(yōu)化實(shí)現(xiàn)
通過Miniconda,您可以輕松地創(chuàng)建和管理多個(gè)Python環(huán)境,同時(shí)確保每個(gè)環(huán)境具有所需的依賴項(xiàng)和軟件包,本文主要介紹了python多版本工具miniconda的配置優(yōu)化實(shí)現(xiàn),感興趣的可以了解一下2024-01-01
python怎么對(duì)數(shù)字進(jìn)行過濾
在本篇內(nèi)容中小編給大家整理的是關(guān)于python怎么對(duì)數(shù)字進(jìn)行過濾的實(shí)例方法內(nèi)容,需要的朋友們可以參考下。2020-07-07
pycharm 主題theme設(shè)置調(diào)整仿sublime的方法
今天小編就為大家分享一篇pycharm 主題theme設(shè)置調(diào)整仿sublime的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05
TensorBoard 計(jì)算圖的可視化實(shí)現(xiàn)
今天小編就為大家分享一篇TensorBoard 計(jì)算圖的可視化實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02
Python PyQt5實(shí)戰(zhàn)項(xiàng)目之網(wǎng)速監(jiān)控器的實(shí)現(xiàn)
PyQt5以一套Python模塊的形式來實(shí)現(xiàn)功能。它包含了超過620個(gè)類,600個(gè)方法和函數(shù)。它是一個(gè)多平臺(tái)的工具套件,它可以運(yùn)行在所有的主流操作系統(tǒng)中,包含Unix,Windows和Mac OS。PyQt5采用雙重許可模式。開發(fā)者可以在GPL和社區(qū)授權(quán)之間選擇2021-11-11
基于Python編寫一個(gè)計(jì)算器程序,實(shí)現(xiàn)簡(jiǎn)單的加減乘除和取余二元運(yùn)算
這篇文章主要介紹了基于Python編寫一個(gè)計(jì)算器程序,實(shí)現(xiàn)簡(jiǎn)單的加減乘除和取余二元運(yùn)算,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
pymongo實(shí)現(xiàn)多結(jié)果進(jìn)行多列排序的方法
這篇文章主要介紹了pymongo實(shí)現(xiàn)多結(jié)果進(jìn)行多列排序的方法,涉及Python排序的相關(guān)技巧,需要的朋友可以參考下2015-05-05

