python中setting.py詳解
setting.py
這個檔案包含了所有有關這個Django專案的配置資訊,均大寫: TEMPLATE_DIRS , DATABASE_NAME , 等. 最重要的設定是 ROOT_URLCONF,它將作為 URLconf 告訴 Django 在這個站點中那些 Python的模組將被用到。
使用 Django 時, 你必須告訴它你使用的是哪個 settings . 要做到這一點,使用環境變數DJANGO_SETTINGS_MODULE.
預設 settings
如果不需要, Django settings 檔案可以不必定義任何 settings. 因為每個設定都有預設值. 這些預設值定義在django/conf/global_settings.py.
使用 settings 的法則:
從 global_settings.py 載入預設設定.
從指定的 settings 檔案載入使用者設定, 需要時覆蓋掉預設設定.注意一個使用者 settings 檔案,不必匯入 global_settings, 這是多餘的.
檢視你改變了哪些設定
有一個簡單的辦法可以檢視你修改了哪些設定.命令 python manage.py diffsettings 顯示當前 settings 檔案與Django 預設設定的不同之處.
在你的程式碼中使用 settings
通過從模組 django.conf.settings 匯入你需要的變數, 你的程式碼可以訪問這個變數. 例子:
from django.conf.settings import DEBUG
if DEBUG:
# Do something
注意一定 不要 從 global_settings 或你自己的 settings 模組匯入設定變數到你的程式碼. django.conf.settings 概括了預設設定和站點自定義設定的概念,它提供了一個統一的介面用於使用者程式碼訪問, 也降低了使用者程式碼與使用者設定的耦合程度.
在執行時修改 settings
不應該在程式執行時修改 settings. 舉例來說, 不要在一個 view 中做這樣的事:
from django.conf.settings import DEBUG
DEBUG = True # Don't do this!
你只應該在你的 settings 檔案中設定 settings, 記住,這是原則.
安全性
由於 settings 檔案包含敏感資訊,象資料庫密碼等.你應該非常小心的設定它的訪問許可權. 舉例來說, 你可以只允許你和 WEB 伺服器使用者閱讀該檔案.在一個共享主機環境時,這一點格外重要.
可用選項
下面是所有可用選項的列表及它們的預設值(按字母順序排列).
ABSOLUTE_URL_OVERRIDES 預設值: {} (空字典)
一個字典對映 "app_label.module_name" 字串到一個函式, 該函式接受一個model物件作為引數並返回它的URL. 這是在一個安裝上覆蓋 get_absolute_url() 方法的一種方式. 例子:
ABSOLUTE_URL_OVERRIDES =
{
'blogs.blogs': lambda o: "/blogs/%s/" % o.slug,
'news.stories': lambda o: "/stories/%s/%s/" % (o.pub_year, o.slug),
}
ADMIN_FOR 預設值: () (空的tuple)
用於 admin-site settings 模組, 若當前站點是 admin ,它則是一個由 settings 模組組成的 tuple (類似'foo.bar.baz' 這樣的格式).
admin 站點在 models, views,及 template tags 的自動內省的文件中使用該設定.
ADMIN_MEDIA_PREFIX 預設值: '/media/'
The URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a trailing slash.
ADMINS 預設值: () (空的 tuple)
一個2-元素tuple的 tuple. 列出了有權接收程式碼錯誤提示的人. 當 DEBUG=False 時,一個 view 引發了異常, Django 會將詳細異常資訊用電子郵件的方式傳送給這些人. 該tuple的每個成員應該是這種格式: (Full name, e-mail address). 例子:
(('John','john@example.com'), ('Mary','mary@example.com'))
ALLOWED_INCLUDE_ROOTS 預設值: () (空的 tuple)
一個字串tuple, 只有以列表中的元素為字首的模板Django才可以以``{% ssi %}`` 形式訪問 . 出於安全考慮, 在不應該訪問時,即使是模板的作者也不能訪問這些檔案.
舉例來說, 若 ALLOWED_INCLUDE_ROOTS 是 ('/home/html', '/var/www'), 那麼 {% ssi /home/html/foo.txt %} 可以正常工作, 不過 {% ssi /etc/passwd %} 卻不能.
APPEND_SLASH 預設值: True
是否給URL新增一個結尾的斜線. 只有安裝了 CommonMiddleware 之後,該選項才起作用. (參閱 middleware 文件). 參閱 PREPEND_WWW.
CACHE_BACKEND預設值: 'simple://'
後端使用的 cache . 參閱 cache docs.
CACHE_MIDDLEWARE_KEY_PREFIX預設值: '' (空的字串)
cache 中介軟體使用的cache key 字首. 參閱 cache docs.
DATABASE_ENGINE預設值: 'postgresql'
後端使用的資料庫引擎: 'postgresql', 'mysql', 'sqlite3' 或 'ado_mssql' 中的任意一個.
DATABASE_HOST預設值: '' (空的字串)
資料庫所在的主機. 空的字串意味著 localhost. SQLite 不需要該項. 如果你使用 MySQL 並且該選項的值以一個斜線 ('/') 開始, MySQL 則通過一個 Unix socket 連線到指定的 socket. 比如:
DATABASE_HOST = '/var/run/mysql'
如果你使用 MySQL 並且該選項的值 不是 以斜線開始, 那麼該選項的值就是主機的名字.
DATABASE_NAME預設值: '' (空的字串)
要使用的資料庫名字. 對 SQLite, 它必須是一個資料庫檔案的全路徑名字.
DATABASE_PASSWORD預設值: '' (空的字串)
連線資料庫需要的密碼. SQLite 不需要該項.
DATABASE_PORT預設值: '' (空的字串)
連線資料庫所需的資料庫埠. 空的字串表示預設埠. SQLite 不需要該項.
DATABASE_USER預設值: '' (空的字串)
連線資料庫時所需要的使用者名稱. SQLite 不需要該項.
DATE_FORMAT預設值: 'N j, Y' (舉例來說 Feb. 4, 2003)
在 Django admin change-list 頁對日期欄位使用的預設日期格式, 系統中的其它部分也可能使用該格式. 參閱allowed date format strings.
參閱 DATETIME_FORMAT 和 TIME_FORMAT.
DATETIME_FORMAT
預設值: 'N j, Y, P' (舉例來說 Feb. 4, 2003, 4 p.m.)
在 Django admin change-list 頁對日期時間欄位使用的預設日期時間格式, 系統中的其它部分也可能使用該格式. 參閱 allowed date format strings.
參閱 DATE_FORMAT 和 TIME_FORMAT.
DEBUG預設值: False
一個開關除錯模式的邏輯值
DEFAULT_CHARSET預設值: 'utf-8'
如果一個 MIME 型別沒有人為指定, 對所有 HttpResponse 物件將應用該預設字符集. 使用DEFAULT_CONTENT_TYPE 來構建 Content-Type 頭.
DEFAULT_CONTENT_TYPE預設值: 'text/html'
如果一個 MIME 型別沒有人為指定, 對所有 HttpResponse 物件將應用該預設 content type. 使用DEFAULT_CHARSET 來構建 Content-Type 頭.
DEFAULT_FROM_EMAIL預設值: 'webmaster@localhost'
用於傳送(站點自動生成的)管理郵件的預設 e-mail 郵箱.
DISALLOWED_USER_AGENTS預設值: () (空的 tuple)
一個編譯的正規表示式物件列表,用於表示一些使用者代理字串.這些使用者代理將被禁止訪問系統中的任何頁面. 使用這個對付頁面機器人或網路爬蟲.只有安裝 CommonMiddleware 後這個選項才有用(參閱 middleware 文件).
EMAIL_HOST預設值: 'localhost'
用來傳送 e-mail 的主機. 參閱 EMAIL_PORT.
EMAIL_HOST_PASSWORD預設值: '' (空的字串)
EMAIL_HOST 中定義的 SMTP 伺服器使用的密碼. 如果為空, Django 不會嘗試進行認證.
參閱 EMAIL_HOST_USER.
EMAIL_HOST_USER預設值: '' (空的字串)
EMAIL_HOST 中定義的 SMTP 伺服器使用的使用者名稱. 如果為空, Django 不會嘗試進行認證.
參閱 EMAIL_HOST_PASSWORD.
EMAIL_PORT預設值: 25
EMAIL_HOST 中指定的SMTP 伺服器所使用的埠號.
EMAIL_SUBJECT_PREFIX預設值: '[Django] '
django.core.mail.mail_admins 或 django.core.mail.mail_managers 傳送的郵件的主題字首.
ENABLE_PSYCO預設值: False
如果允許 Psyco, 將使用Pscyo優化 Python 程式碼. 需要 Psyco 模組.
IGNORABLE_404_ENDS預設值: ('mail.pl', 'mailform.pl', 'mail.cgi', 'mailform.cgi', 'favicon.ico', '.php')
參閱 IGNORABLE_404_STARTS.
IGNORABLE_404_STARTS預設值: ('/cgi-bin/', '/_vti_bin', '/_vti_inf')
一個字串 tuple . 以該tuple中元素為開頭的 URL 應該被 404 e-mailer 忽略. 參閱SEND_BROKEN_LINK_EMAILS 和 IGNORABLE_404_ENDS.
INSTALLED_APPS預設值: () (空的 tuple)
一個字串tuple ,內容是本 Django 安裝中的所有應用. 每個字串應該是一個包含Django應用程式的Python包的路徑全稱, django-admin.py startapp 會自動往其中新增內容.
INTERNAL_IPS預設值: () (空的 tuple)
一個 ip 地址的 tuple(字串形式), 它:
當 DEBUG 為 True 時,參閱除錯務註解
接收 X 頭(若 XViewMiddleware 已安裝), (參閱 middleware 文件)
JING_PATH
預設值: '/usr/bin/jing'
"Jing" 執行檔案路徑全名. Jing 是一個 RELAX NG 校驗器, Django 使用它對你的 model 的 XMLField 進行驗證. 參閱 http://www.thaiopensource.com/relaxng/jing.html .
LANGUAGE_CODE預設值: 'en-us'
表示預設語言的一個字串. 必須是標準語言格式. 舉例來說, U.S. English 就是 "en-us". 參閱internationalization docs.
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')),
)
一個2-元素tuple<格式為 (語言程式碼, 語言名稱)>的 tuple. 該設定用於選擇可用語言.參閱internationalization docs 瞭解細節.
通常這個預設值就足夠了.除非你打算減少提供的語言數目,否則沒必要修改這個設定.
MANAGERS預設值: ADMINS (不論 ADMINS 是否已經設定)
一個和 ADMINS 同樣格式的 tuple , 當 SEND_BROKEN_LINK_EMAILS=True 時, 這些人有權接收死連結通知資訊.
MEDIA_ROOT預設值: '' (空的字串)
一個絕對路徑, 用於儲存媒體檔案. 例子: "/home/media/media.lawrence.com/" 參閱 MEDIA_URL.
MEDIA_URL預設值: '' (空的字串)
處理媒體服務的URL(媒體檔案來自 MEDIA_ROOT). 如: "http://media.lawrence.com"
MIDDLEWARE_CLASSES
預設值:
("django.contrib.sessions.middleware.SessionMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
"django.middleware.common.CommonMiddleware",
"django.middleware.doc.XViewMiddleware")
一個django 用到的中介軟體 class 名稱的 tuple. 參閱 middleware 文件.
PREPEND_WWW預設值: False
是否為沒有 "www." 字首的域名新增 "www." 字首. 當且僅當安裝有 CommonMiddleware 後該選項才有效. (參閱middleware 文件).參閱 APPEND_SLASH.
ROOT_URLCONF預設值: Not defined
一個字串,表示你的根 URLconf 的模組名. 舉例來說:"mydjangoapps.urls". 參閱 Django如何處理一個請求.
SECRET_KEY預設值: '' (空的字串)
一個密碼. 用於為密碼雜湊演算法提供一個種子.將其設定為一個隨機字串 -- 越長越好. django-admin.py startproject 會自動給你建立一個.
SEND_BROKEN_LINK_EMAILS預設值: False
當有人從一個有效Django-powered頁面訪問另一個Django-powered頁面時發現404錯誤(也就是發現一個死連結)時, 是否傳送一封郵件給 MANAGERS. 當且僅當 安裝有 CommonMiddleware 時該選項才有效(參閱`middleware 文件`_). 參閱 IGNORABLE_404_STARTS `` 和 IGNORABLE_404_ENDS``.
SERVER_EMAIL預設值: 'root@localhost'
用來傳送錯誤資訊的郵件地址, 比如傳送給 ADMINS 和 MANAGERS 的郵件.
SESSION_COOKIE_AGE預設值: 1209600 (2周, 以秒計)
session cookies 的生命週期, 以秒計. 參閱 session docs.
SESSION_COOKIE_DOMAIN預設值: None
session cookies 有效的域. 將其值設定為類似 ".lawrence.com" 這樣 cookie 就可以跨域生效, 或者使用None 作為一個標準的域 cookie. 參閱 session docs.
SESSION_COOKIE_NAME預設值: 'sessionid'
session 使用的cookie 名字. 參閱 session docs.
SESSION_SAVE_EVERY_REQUEST預設值: False
是否每次請求都儲存session. 參閱 session docs.
SITE_ID預設值: Not defined
是一個整數, 表示 django_site 表中的當前站點. 當一個資料包含多個站點資料時,你的程式可以據此 ID 訪問特定站點的資料.
TEMPLATE_CONTEXT_PROCESSORS預設值:
("django.core.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n")
A tuple of callables that are used to populate the context in RequestContext. These callables take a request object as their argument and return a dictionary of items to be merged into the context.
TEMPLATE_DEBUG預設值: False
一個布林值,用來開關模板除錯模式.若設定為 True, 如果有任何 TemplateSyntaxError,一個詳細的錯誤報告資訊頁將被顯示給你.這個報告包括有關的模板片斷,相應的行會自動高亮.
注意 Django 僅在 DEBUG 為 True 時顯示這個資訊頁面.
參閱 DEBUG.
TEMPLATE_DIRS預設值: () (空的 tuple)
模板原始檔目錄列表,按搜尋順序. 注意要使用 Unix-風格的前置斜線(即'/'), 即便是在 Windows 上.
參閱 template documentation.
TEMPLATE_LOADERS預設值: ('django.template.loaders.filesystem.load_template_source',)
一個元素為可呼叫物件(字串形式的)的 tuple. 這些物件知道如何匯入 templates 從各種源中. 參閱 template documentation.
TEMPLATE_STRING_IF_INVALID預設值: '' (空的字串)
輸出文字, 作為一個字串. 模板系統將會在出錯 (比如說拼錯了) 時使用該變數. 參閱 How invalid variables are handled.
TIME_FORMAT預設值: 'P' (舉例來說 4 p.m.)
Django admin change-list 使用的預設時間格式. 有可能系統的其它部分也使用該格式. 參閱 allowed date format strings.
參閱 DATE_FORMAT 和 DATETIME_FORMAT.
TIME_ZONE預設值: 'America/Chicago' (我們可以用 'Asia/Shanghai PRC' )
一個表示當前時區的字串. 參閱 選擇項列表.
Django 據此設定轉換所有的日期/時間 -- 並不考慮伺服器的時區設定. 舉例來說, 一臺伺服器可以服務多個Django-powered 站點,每個站點使用一個獨立的時區設定.
USE_ETAGS預設值: False
一個布林值.指定是否輸出 "Etag" 頭. 這個選項可以節省網路頻寬,但損失效能. 只有安裝 CommonMiddleware 後這個選項才有用(參閱 middleware 文件)
建立你自己的 settings
你可以為自己的Django 應用程式建立自定義 settings. 只需要你遵守以下慣例:
設定名稱全部大寫. 如果某項設定是一個序列,優先使用 tuple.這完全是基於效能考慮. 不要為已經存的一個設定重新發明一個名字.
相關文章
- python中dict詳解Python
- Python中的Super詳解Python
- 詳解Python中的程式Python
- python中list切片詳解Python
- Python中的列表詳解Python
- Python3中urlopen()詳解Python
- python 中model.py詳解Python
- Python中的函式詳解Python函式
- Python中的__new__()詳解Python
- Python中Numpy函式詳解Python函式
- Python中協程(coroutine)詳解Python
- Python 中的魔術方法詳解Python
- Python中的魔術方法詳解Python
- 詳解Python中的下劃線Python
- python 中求和函式 sum詳解Python函式
- 詳解Python中的str.format方法PythonORM
- python中變數的命名及詳解Python變數
- Python 中__new__方法詳解及使用Python
- Python中裝飾器語法詳解Python
- python3.x中argparse模組詳解Python
- Python中enumerate函式用法詳解Python函式
- python基礎(8)python中is和==的區別詳解Python
- Python3中strip()、lstrip()、rstrip()用法詳解Python
- 詳解Python中的__init__和__new__Python
- 詳解Python中yield生成器的用法Python
- 詳細解讀Python中的__init__()方法Python
- Python中none和null的區別詳解!PythonNoneNull
- python模組詳解Python
- Python列表詳解Python
- Python @property 詳解Python
- 詳解Python GILPython
- Python socket 詳解Python
- Python 命令詳解Python
- python切片詳解Python
- Python 中的設計模式詳解之:策略模式Python設計模式
- Python3中使用PyMongo的方法詳解PythonGo
- Python3中*和**運算子的用法詳解!Python
- 詳解Python中sys模組的功能與應用Python