1. 程式人生 > >【5】Django專案配置settings.py詳解

【5】Django專案配置settings.py詳解

夫唯不爭,故天下莫能與之爭
——老子《道德經》

本節內容

  • 1.專案配置檔案settings.py介紹
  • 2.資料庫配置【MySQL】
  • 3.建立模型物件並和資料庫同步
  • 4.python官方提供的專案後臺管理平臺的使用
    注意:本節內容我們會按照三部分進行分步講解

我們建立好了一個Python專案(mysite/)之後,需要在專案中新增模組應用(polls/),在模組應用中新增處理功能邏輯,如新增模組中的檢視處理函式(polls.views.index()),這是一個python專案簡單的結構模型

但是上面的專案應用,這是在一個專案中包含了一個模組應用,如果讓專案對模組應用的資料進行管理;同時按照常規專案處理要求,專案中的資料要儲存到指定的資料庫中;同時我們得有一個對專案資訊進行管理的系統平臺;本節內容中就要對於這些亟待解決的問題進行解決(大家同樣可以參考官方文件的操作方式)

1. 專案配置檔案settings.py

建立的Django專案中,會在根模組中包含一個settings.py配置檔案,這個配置檔案中用於配置和管理Django專案的管理運維資訊

1.1. 配置檔案的特性
  • 配置項
    settings.py配置檔案中的所有配置項都是大寫的
  • 預設值
    settings.py在專案建立時,就初始化了一些預設配置,這些預設配置承載著最基礎的專案資訊
  • 配置規則
    可以從global_settings.py中匯入全域性配置,常規情況下,這是不必要的
    在配置過程中,我們可以隨時通過python manage.py diffsettings來檢視當前settings檔案和預設設定的不同之處
    可以通過django.conf.settings
    模組中匯入變數,在程式碼中訪問配置資訊,這樣的話,就可以在程式執行過程中進行動態的settings配置修改
  • 安全性
    對於settings檔案包含的資訊,涉密的情況很多,需要嚴格控制settings.py檔案的訪問許可權,在共享主機的情況下,這一點格外重要。
1.2. 常規配置

前一段時間江湖流行武術打假,接下來,就是一堆的硬功夫了~~非常之枯燥,看看就行,我們只需要知道別人的招數是做什麼用的就好!,當然,絕招還是會提示的
友情提示:千萬別修煉下面這些玩意兒!如果興趣不大可以直接翻頁到下一節內容

  • 1.2.1 ABSOLUTE_URL_OVERRIDES:預設值:{}
    一個字典對映“app_label_module_name”字串到一個函式,該函式接收一個Model物件作為引數並返回它的url,這是一個安裝上覆蓋get_absolute_url()方法的方式
  • 1.2.2 ADMIN_FOR:預設值:()
    用於admin-site settings模組,如果當前站點是admin,它是一個由settings模組組成的tuple字典
  • 1.2.3 ADMIN_MEDIA_PREFIX:預設值:"/media/"
    用於給admin模組設定媒體、CSS、JS和圖片的字首,請確保正確的使用它
  • 1.2.4 ADMINS:預設值:()
    一個包含2個元素的字典,列出了有權接收程式碼錯誤提示的郵件列表,當DEBUG=False時,如果一個view引發了異常,Django會將詳細資訊用電子郵件的方式傳送給這些郵件地址,內容格式一般是(名稱,郵箱),如:(("管理員A",[email protected]),("管理員B",[email protected]))
  • 1.2.5 ALLOWED_INCLUDE_ROOTS:預設值:()
    一個字元擦混字典,列表中的元素為字首的模板Django才可以以{%ssi%}形式方法,處於安全考慮,在不應該訪問時即使是模板的坐著也不能訪問這些檔案
  • 1.2.6 APPEND_SLASH:預設值:True
    是否給URL新增一個結尾的斜線,只有安裝了CommonMiddleware之後,該選項才起作用
  • 1.2.7 CACHE_BACKEND:預設值:'simple://'
    後盾使用的cache快取
  • 1.2.8 CACHE_MIDDLEWARE_KEY_PREFIX:預設值:""
    cache中介軟體使用的cache key字首
  • 1.2.9 DATABASE_ENGINE:預設值:"postgresql"
    後端使用的資料庫引擎:“posgresql”、"mysql"、"sqlite3"或者"ado_mssql"中的任意一個
  • 1.2.10 DATABASE_HOST:預設值:""
    資料庫所在主機,空字串意味著使用localhost SQLite.如果你使用MYSQL並且該選項以一個斜線"/"開始,MySQL會通過一個Unix socket連線到指定更多socket
  • 1.2.11 DATABASE_NAME:預設值:""
    要使用的資料庫名稱,預設的SQLite資料庫不需要該項
  • 1.2.12 DATABASE_PASSWORD:預設值:""
    連線資料庫時的登入密碼,預設的SQLite資料庫不需要該項
  • 1.2.13 DATABASE_PORT:預設值:""
    連線資料庫時使用的埠,預設的SQLite不需要該項
  • 1.2.14 DATABASE_USER:預設值:""
    連線資料庫時使用的使用者名稱,SQLite不需要該項
  • 1.2.15 DATE_FORMAT:預設值:"N j, Y"
    對日期欄位使用的預設日期格式
  • 1.2.16 DEBUG:預設值:False
    一個開關,用於是否開啟除錯模式
  • 1.2.17 DEFAULT_CHARSET:預設值:"utf-8"
    設定所有HttpResponse物件的預設字符集,構建Content-Type頭資料
  • 1.2.18 DEFAULT_CONTENT_TYPE:預設值:"text/html"
    設定所有HttpResponse對物件的預設資料格式,構建Content-type頭資料
  • 1.2.19 EMAIL_HOST:預設值:“localhost”
    用來發送e-mail電子郵件的主機
    1.2.20 EMAIL_HOST_PASSWORD:預設值:""
    EMAIL_HOST選項中定義的SMPT郵箱伺服器登入密碼,如果為空~Django就不會嘗試進行認證
  • 1.2.21 EMAIL_HOST_USER:預設值:""
    EMAIL_HOST選項中定義的SMTP伺服器使用的使用者名稱,如果為空~Django將不會嘗試進行認證
  • 1.2.22 EMAIL_PORT:預設值:25
    EMAIL_HOST選項指定的SMTP伺服器使用的埠號
  • 1.2.23 ENABLE_PSYCO:預設值False
    確定是否使用pscyo優化python程式碼,需要依賴psyco模組
    1.2.24 IGNORABLE_404_STARTS:預設值: ('/cgi-bin/', '/vti_bin', '/vti_inf')
    一個字串 tuple . 以該tuple中元素為開頭的 URL 應該被 404 e-mailer 忽略
    1.2.25 INSTALLED_APPS:預設值: () (空的 tuple)
    一個字串tuple ,內容是本 Django 安裝中的所有應用. 每個字串應該是一個包含Django應用程式的Python包的路徑全稱, django-admin.py startapp 會自動往其中新增內容.
    1.2.26 INTERNAL_IPS:預設值: () (空的 tuple)
    一個 ip 地址的 tuple(字串形式), 它:
    當 DEBUG 為 True 時,參閱除錯務註解
    接收 X 頭(若 XViewMiddleware 已安裝), (參閱 middleware 文件)
    JING_PATH
    預設值: '/usr/bin/jing'
    1.2.27 LANGUAGE_CODE:預設值: 'en-us'
    表示預設語言的一個字串. 必須是標準語言格式. 舉例來說, U.S. English 就是 "en-us". 參閱internationalization docs.
    1.2.28 LANGUAGES:預設值: 一個 tuple (內容為所有可用語言). 目前它的值是:
    LANGUAGES = (
    ('bn',
    ('Bengali')),
    ('cs',
    ('Czech')),
    ('cy', ('Welsh')),
    ('da',
    ('Danish')),
    ('de', ('German')),
    ('en',
    ('English')),
    ('es', ('Spanish')),
    ('fr',
    ('French')),
    ('gl', ('Galician')),
    ('is',
    ('Icelandic')),
    ('it', ('Italian')),
    ('no',
    ('Norwegian')),
    ('pt-br', ('Brazilian')),
    ('ro',
    ('Romanian')),
    ('ru', ('Russian')),
    ('sk',
    ('Slovak')),
    ('sr', ('Serbian')),
    ('sv',
    ('Swedish')),
    ('zh-cn', _('Simplified Chinese')),
    )
    1.2.29 MANAGERS:預設值: ADMINS (不論 ADMINS 是否已經設定)
    一個和 ADMINS 同樣格式的 tuple , 當 SEND_BROKEN_LINK_EMAILS=True 時, 這些人有權接收死連結通知資訊.
    1.2.30 MEDIA_ROOT:預設值: '' (空的字串)
    一個絕對路徑, 用於儲存媒體檔案
    1.2.31 MEDIA_URL預設值: '' (空的字串)
    處理媒體服務的URL(媒體檔案來自 MEDIA_ROOT)
    1.2.32 PREPEND_WWW:預設值: False
    是否為沒有 "www." 字首的域名新增 "www." 字首. 當且僅當安裝有 CommonMiddleware 後該選項才有效
    1.2.33 ROOT_URLCONF預設值: Not defined
    一個字串,表示你的根 URLconf 的模組名. 舉例來說:"mydjangoapps.urls". 參閱 Django如何處理一個請求.
    1.2.24 ECRET_KEY預設值: '' (空的字串)
    一個密碼. 用於為密碼雜湊演算法提供一個種子.將其設定為一個隨機字串 -- 越長越好. django-admin.py startproject 會自動給你建立一個.
    1.2.25 SEND_BROKEN_LINK_EMAILS預設值: False
    當有人從一個有效Django-powered頁面訪問另一個Django-powered頁面時發現404錯誤(也就是發現一個死連結)時, 是否傳送一封郵件給 MANAGERS. 當且僅當 安裝有 CommonMiddleware 時該選項才有效
    1.2.26 SERVER_EMAIL
    預設值: '[email protected]'
    用來發送錯誤資訊的郵件地址, 比如傳送給 ADMINS 和 MANAGERS 的郵件.
    1.2.27 SESSION_COOKIE_AGE:預設值: 1209600 (2周, 以秒計)
    session cookies 的生命週期, 以秒計. 參閱 session docs.
    1.2.28 SESSION_COOKIE_DOMAIN:預設值: None
    session cookies 有效的域. 將其值設定為類似 ".lawrence.com" 這樣 cookie 就可以跨域生效, 或者使用None 作為一個標準的域 cookie. 參閱 session docs.
    1.2.29 SESSION_COOKIE_NAME預設值: 'sessionid'
    session 使用的cookie 名字. 參閱 session docs.
    1.2.30 SESSION_SAVE_EVERY_REQUEST預設值: False
    是否每次請求都儲存session
    1.2.31 SITE_ID預設值: Not defined
    是一個整數, 表示 django_site 表中的當前站點. 當一個數據包含多個站點資料時,你的程式可以據此 ID 訪問特定站點的資料.
    1.2.32 TEMPLATE_DEBUG預設值: False
    一個布林值,用來開關模板除錯模式.若設定為 True, 如果有任何 TemplateSyntaxError,一個詳細的錯誤報告資訊頁將被顯示給你.這個報告包括有關的模板片斷,相應的行會自動高亮.
    注意 Django 僅在 DEBUG 為 True 時顯示這個資訊頁面.
    1.2.33 TEMPLATE_DIRS預設值: () (空的 tuple)
    模板原始檔目錄列表,按搜尋順序. 注意要使用 Unix-風格的前置斜線(即'/'), 即便是在 Windows 上.
    1.2.34 TEMPLATE_LOADERS預設值:('django.template.loaders.filesystem.load_template_source',)
    一個元素為可呼叫物件(字串形式的)的 tuple. 這些物件知道如何匯入 templates 從各種源中. 參閱 template documentation.
    1.2.35 EMPLATE_STRING_IF_INVALID預設值: '' (空的字串)
    輸出文字, 作為一個字串. 模板系統將會在出錯 (比如說拼錯了) 時使用該變數. 參閱 How invalid variables are handled.
    1.2.36 TIME_FORMAT預設值: 'P' (舉例來說 4 p.m.)
    Django admin change-list 使用的預設時間格式. 有可能系統的其它部分也使用該格式. 參閱 allowed date format strings.
    1.2.37 TIME_ZONE預設值: 'America/Chicago' (我們可以用 'Asia/Shanghai PRC' )
    一個表示當前時區的字串. 參閱 選擇項列表.
    Django 據此設定轉換所有的日期/時間 -- 並不考慮伺服器的時區設定. 舉例來說, 一臺伺服器可以服務多個Django-powered 站點,每個站點使用一個獨立的時區設定.
    1.2.38 USE_ETAGS預設值: False
    一個布林值.指定是否輸出 "Etag" 頭. 這個選項可以節省網路頻寬,但損失效能. 只有安裝 CommonMiddleware 後這個選項才有用(參閱 middleware 文件)