<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Dynaconf 輕松實(shí)現(xiàn) Python 動(dòng)態(tài)配置管理

          共 3696字,需瀏覽 8分鐘

           ·

          2021-12-11 06:13

          Dynaconf 是一個(gè)Python的第三方模塊,旨在成為在 Python 中管理配置的最佳選擇。

          它可以從各種來源讀取設(shè)置,包括環(huán)境變量、文件、服務(wù)器配置等。

          它適用于任何類型的 Python 程序,包括 Flask 和 Django 擴(kuò)展。

          1.準(zhǔn)備



          開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上,如果沒有,可以訪問這篇文章:超詳細(xì)Python安裝指南?進(jìn)行安裝。

          (可選1)?如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda:Python數(shù)據(jù)分析與挖掘好幫手—Anaconda,它內(nèi)置了Python和pip.

          (可選2)?此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點(diǎn):Python 編程的最好搭檔—VSCode 詳細(xì)指南

          請(qǐng)選擇以下任一種方式輸入命令安裝依賴
          1. Windows 環(huán)境 打開 Cmd (開始-運(yùn)行-CMD)。
          2. MacOS 環(huán)境 打開 Terminal (command+空格輸入Terminal)。
          3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.

          pip install?dynaconf


          2.初步使用DynaConf



          在你的項(xiàng)目的根目錄中運(yùn)行??dynaconf init??命令。

          cd?path/to/your/project/
          dynaconf init -f toml


          會(huì)有類似如下的輸出,說明初始化完成:

          ?? Configuring your Dynaconf environment
          ------------------------------------------
          ?? The file `config.py` was generated.

          ??? settings.toml created to hold your settings.

          ?? .secrets.toml created to hold your secrets.

          ?? the .secrets.* is also included in?`.gitignore`
          beware to not push your secrets to a public repo.

          ?? Dynaconf is configured! read?more on https://dynaconf.com


          剛剛初始化的時(shí)候我們選擇了 toml 格式。實(shí)際上你還可以選擇??toml|yaml|json|ini|py?,不過?toml?是默認(rèn)的,也是最推薦的配置格式。

          初始化完成后會(huì)創(chuàng)建以下文件:

          .
          ├── config.py # 需要被導(dǎo)入的配置腳本
          ├── .secrets.toml # 像密碼等敏感信息配置
          └── settings.toml # 應(yīng)用配置


          初始化完成后你就可以編寫你的配置,編輯settings.toml:

          key?= "value"
          a_boolean?= false
          number?= 1234
          a_float?= 56.8
          a_list?= [1, 2, 3, 4]
          a_dict?= {hello="world"}

          [a_dict.nested]

          other_level?= "nested value"


          然后就可以在你的代碼中導(dǎo)入并使用這些配置:

          from?config import?settings

          assert?settings.key == "value"
          assert?settings.number == 789
          assert?settings.a_dict.nested.other_level == "nested value"
          assert?settings['a_boolean'] is?False
          assert?settings.get("DONTEXIST", default=1) == 1


          如果是密碼等敏感信息,你可以配置在 .secrets.toml 中:

          password?= "s3cr3t"
          token?= "dfgrfg5d4g56ds4gsdf5g74984we5345-"
          message?= "This file doesn't go to your pub repo"


          .secrets.toml 文件會(huì)被自動(dòng)加入到 .gitignore 文件中,這些信息不會(huì)被上傳到Git倉(cāng)庫(kù)上。

          同時(shí),DYNACONF還支持帶前綴的環(huán)境變量:

          export?DYNACONF_NUMBER=789
          export?DYNACONF_FOO=false
          export?DYNACONF_DATA__CAN__BE__NESTED=value
          export?DYNACONF_FORMATTED_KEY="@format {this.FOO}/BAR"
          export?DYNACONF_TEMPLATED_KEY="@jinja {{ env['HOME'] | abspath }}"

          3.高級(jí)使用



          你還可以在Flask或Django中使用DynaConf,以Django為例,第一步要先確保已經(jīng)設(shè)置 DJANGO_SETTINGS_MODULE 環(huán)境變量:

          export?DJANGO_SETTINGS_MODULE=yourproject.settings


          然后在 manage.py 相同文件夾下運(yùn)行初始化命令:

          dynaconf init -f yaml


          然后按照終端上的說明進(jìn)行操作:

          Django app detected
          ?? Configuring your Dynaconf environment
          ------------------------------------------
          ??? settings.yaml created to hold your settings.

          ?? .secrets.yaml created to hold your secrets.

          ?? the .secrets.yaml is also included in?`.gitignore`
          beware to not push your secrets to a public repo
          or use dynaconf builtin?support for?Vault Servers.

          ? path/to/yourproject/settings.py is found do?you want to add dynaconf? [y/N]:


          回答 y:

          ?? Now your Django settings are managed by Dynaconf
          ?? Dynaconf is configured! read more on https://dynaconf.com


          在 Django 上,推薦的文件格式是yaml,因?yàn)樗梢愿p松地保存復(fù)雜的數(shù)據(jù)結(jié)構(gòu),但是你依然可以選擇使用 toml、json、ini 甚至將你的配置保存為 .py 格式。

          初始化 dynaconf 后,在現(xiàn)有的settings.py底部包含以下內(nèi)容:

          # HERE STARTS DYNACONF EXTENSION LOAD
          import?dynaconf # noqa
          settings = dynaconf.DjangoDynaconf(__name__) # noqa
          # HERE ENDS DYNACONF EXTENSION LOAD (No more code below this line)


          現(xiàn)在,在你的 Django 視圖、模型和所有其他地方,你現(xiàn)在可以正常使用?django.conf.settings,因?yàn)樗驯?Dynaconf 設(shè)置對(duì)象替換。

          from?django.conf import?settings


          def?index(request):
          ????assert?settings.DEBUG is?True
          ????assert?settings.NAME == "Bruno"
          ????assert?settings.DATABASES.default.name == "db"
          ????assert?settings.get("NONEXISTENT", 2) == 2


          現(xiàn)在,通過修改 manage.py 相同文件夾下的配置文件,就能讓配置全局生效了。

          我們的文章到此就結(jié)束啦,如果你喜歡今天的Python 實(shí)戰(zhàn)教程,請(qǐng)持續(xù)關(guān)注Python實(shí)用寶典。

          有任何問題,可以在公眾號(hào)后臺(tái)回復(fù):加群,回答相應(yīng)紅字驗(yàn)證信息,進(jìn)入互助群詢問。

          原創(chuàng)不易,希望你能在下面點(diǎn)個(gè)贊和在看支持我繼續(xù)創(chuàng)作,謝謝!

          點(diǎn)擊下方閱讀原文可獲得更好的閱讀體驗(yàn)

          Python實(shí)用寶典?(pythondict.com)
          不只是一個(gè)寶典
          歡迎關(guān)注公眾號(hào):Python實(shí)用寶典

          瀏覽 49
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩乱伦小说 | 色婷婷综合视频在线观看 | 国产视频高清 | www.操B在线播放 | 亚洲精品国偷拍自产在线观看蜜臀 |