- 深入理解Django:框架內(nèi)幕與實現(xiàn)原理
- 沈聰 全樹強編著
- 402字
- 2022-05-06 12:24:04
3.1.1 Settings類
Settings類的定義如下:


從Settings類中可以直接得到第2個問題的答案。在該類的初始化方法中,先在全局的配置模塊(global_settings模塊)中遍歷大寫的屬性及其值并添加到該Settings對象中。這里用到了dir()和setattr()這兩個非常常見且十分重要的函數(shù),前者表示獲取模塊的屬性,后者表示給對象設置屬性及屬性值。這樣Settings對象就具備了global_settings模塊中的屬性,并且其值和global_settings模塊中的相同。之后再導入傳入的settings_module模塊,按同樣的方式設置該Settings對象的屬性。如果settings_module模塊和global_settings模塊中的屬性有交叉,則以settings_module模塊的為準(因為是后設置的)。接著是一些必須要設置的屬性值,比如SECRET_KEY值等。如果不在settings_module模塊中設置,即默認為空字符串,則會直接拋出異常。下面看一下該類的一個使用示例,代碼如下:


上面的示例演示了在配置文件中定義的三個變量值:DEBUG、SECRET_KEY和FILE_UPLOAD_MAX_MEMORY_SIZE。其中,前兩個變量在first_django.settings模塊中已定義,而第三個變量沒有在first_django.settings模塊中定義。因此,最終得到的Settings對象的前兩個屬性值為first_django.settings模塊中定義的變量值,而第三個屬性值為django.conf.global_settings模塊中定義的變量值。
推薦閱讀
- C++面向對象程序設計(第三版)
- Mastering Ext JS(Second Edition)
- 自然語言處理實戰(zhàn):預訓練模型應用及其產(chǎn)品化
- LabVIEW入門與實戰(zhàn)開發(fā)100例
- FreeSWITCH 1.6 Cookbook
- MySQL數(shù)據(jù)庫基礎實例教程(微課版)
- Learning Apache Karaf
- Node.js開發(fā)指南
- Swift語言實戰(zhàn)晉級
- 玩轉.NET Micro Framework移植:基于STM32F10x處理器
- Application Development with Parse using iOS SDK
- Docker:容器與容器云(第2版)
- 3D Printing Designs:The Sun Puzzle
- 游戲設計的底層邏輯
- PHP程序設計經(jīng)典300例