夫唯不爭(zhēng)过牙,故天下莫能與之爭(zhēng)
——老子《道德經(jīng)》
本節(jié)內(nèi)容
- 1.項(xiàng)目配置文件settings.py介紹
- 2.數(shù)據(jù)庫(kù)配置【MySQL】
- 3.創(chuàng)建模型對(duì)象并和數(shù)據(jù)庫(kù)同步
- 4.python官方提供的項(xiàng)目后臺(tái)管理平臺(tái)的使用
注意:本節(jié)內(nèi)容我們會(huì)按照三部分進(jìn)行分步講解
我們創(chuàng)建好了一個(gè)Python項(xiàng)目(mysite/)之后,需要在項(xiàng)目中添加模塊應(yīng)用(polls/)著蟹,在模塊應(yīng)用中添加處理功能邏輯结榄,如添加模塊中的視圖處理函數(shù)(polls.views.index())中贝,這是一個(gè)python項(xiàng)目簡(jiǎn)單的結(jié)構(gòu)模型
但是上面的項(xiàng)目應(yīng)用,這是在一個(gè)項(xiàng)目中包含了一個(gè)模塊應(yīng)用臼朗,如果讓項(xiàng)目對(duì)模塊應(yīng)用的數(shù)據(jù)進(jìn)行管理邻寿;同時(shí)按照常規(guī)項(xiàng)目處理要求,項(xiàng)目中的數(shù)據(jù)要保存到指定的數(shù)據(jù)庫(kù)中视哑;同時(shí)我們得有一個(gè)對(duì)項(xiàng)目信息進(jìn)行管理的系統(tǒng)平臺(tái)绣否;本節(jié)內(nèi)容中就要對(duì)于這些亟待解決的問(wèn)題進(jìn)行解決(大家同樣可以參考官方文檔的操作方式)
1. 項(xiàng)目配置文件settings.py
創(chuàng)建的Django項(xiàng)目中,會(huì)在根模塊中包含一個(gè)settings.py
配置文件挡毅,這個(gè)配置文件中用于配置和管理Django項(xiàng)目的管理運(yùn)維信息
1.1. 配置文件的特性
- 配置項(xiàng)
settings.py配置文件中的所有配置項(xiàng)都是大寫(xiě)的 - 默認(rèn)值
settings.py在項(xiàng)目創(chuàng)建時(shí)蒜撮,就初始化了一些默認(rèn)配置,這些默認(rèn)配置承載著最基礎(chǔ)的項(xiàng)目信息 - 配置規(guī)則
可以從global_settings.py中導(dǎo)入全局配置跪呈,常規(guī)情況下段磨,這是不必要的
在配置過(guò)程中,我們可以隨時(shí)通過(guò)python manage.py diffsettings
來(lái)查看當(dāng)前settings文件和默認(rèn)設(shè)置的不同之處
可以通過(guò)django.conf.settings
模塊中導(dǎo)入變量耗绿,在代碼中訪問(wèn)配置信息苹支,這樣的話,就可以在程序運(yùn)行過(guò)程中進(jìn)行動(dòng)態(tài)的settings配置修改 - 安全性
對(duì)于settings文件包含的信息误阻,涉密的情況很多债蜜,需要嚴(yán)格控制settings.py文件的訪問(wèn)權(quán)限,在共享主機(jī)的情況下究反,這一點(diǎn)格外重要寻定。
1.2. 常規(guī)配置
前一段時(shí)間江湖流行武術(shù)打假,接下來(lái)奴紧,就是一堆的硬功夫了~~非常之枯燥特姐,看看就行,我們只需要知道別人的招數(shù)是做什么用的就好黍氮!唐含,當(dāng)然,絕招還是會(huì)提示的
友情提示:千萬(wàn)別修煉下面這些玩意兒沫浆!如果興趣不大可以直接翻頁(yè)到下一節(jié)內(nèi)容
- 1.2.1 ABSOLUTE_URL_OVERRIDES:默認(rèn)值:{}
一個(gè)字典映射“app_label_module_name”字符串到一個(gè)函數(shù)捷枯,該函數(shù)接收一個(gè)Model對(duì)象作為參數(shù)并返回它的url,這是一個(gè)安裝上覆蓋get_absolute_url()方法的方式 - 1.2.2 ADMIN_FOR:默認(rèn)值:()
用于admin-site settings模塊专执,如果當(dāng)前站點(diǎn)是admin淮捆,它是一個(gè)由settings模塊組成的tuple字典 - 1.2.3 ADMIN_MEDIA_PREFIX:默認(rèn)值:"/media/"
用于給admin模塊設(shè)置媒體、CSS、JS和圖片的前綴攀痊,請(qǐng)確保正確的使用它 - 1.2.4 ADMINS:默認(rèn)值:()
一個(gè)包含2個(gè)元素的字典桐腌,列出了有權(quán)接收代碼錯(cuò)誤提示的郵件列表,當(dāng)DEBUG=False時(shí)苟径,如果一個(gè)view引發(fā)了異常案站,Django會(huì)將詳細(xì)信息用電子郵件的方式發(fā)送給這些郵件地址,內(nèi)容格式一般是(名稱,郵箱)棘街,如:(("管理員A",admin@damu.com),("管理員B",manager@damu.com)) - 1.2.5 ALLOWED_INCLUDE_ROOTS:默認(rèn)值:()
一個(gè)字符擦混字典蟆盐,列表中的元素為前綴的模板Django才可以以{%ssi%}形式方法,處于安全考慮遭殉,在不應(yīng)該訪問(wèn)時(shí)即使是模板的坐著也不能訪問(wèn)這些文件 - 1.2.6 APPEND_SLASH:默認(rèn)值:True
是否給URL添加一個(gè)結(jié)尾的斜線石挂,只有安裝了CommonMiddleware之后,該選項(xiàng)才起作用 - 1.2.7 CACHE_BACKEND:默認(rèn)值:'simple://'
后盾使用的cache緩存 - 1.2.8 CACHE_MIDDLEWARE_KEY_PREFIX:默認(rèn)值:""
cache中間件使用的cache key前綴 - 1.2.9 DATABASE_ENGINE:默認(rèn)值:"postgresql"
后端使用的數(shù)據(jù)庫(kù)引擎:“posgresql”险污、"mysql"痹愚、"sqlite3"或者"ado_mssql"中的任意一個(gè) - 1.2.10 DATABASE_HOST:默認(rèn)值:""
數(shù)據(jù)庫(kù)所在主機(jī),空字符串意味著使用localhost SQLite.如果你使用MYSQL并且該選項(xiàng)以一個(gè)斜線"/"開(kāi)始罗心,MySQL會(huì)通過(guò)一個(gè)Unix socket連接到指定更多socket - 1.2.11 DATABASE_NAME:默認(rèn)值:""
要使用的數(shù)據(jù)庫(kù)名稱里伯,默認(rèn)的SQLite數(shù)據(jù)庫(kù)不需要該項(xiàng) - 1.2.12 DATABASE_PASSWORD:默認(rèn)值:""
連接數(shù)據(jù)庫(kù)時(shí)的登錄密碼,默認(rèn)的SQLite數(shù)據(jù)庫(kù)不需要該項(xiàng) - 1.2.13 DATABASE_PORT:默認(rèn)值:""
連接數(shù)據(jù)庫(kù)時(shí)使用的端口渤闷,默認(rèn)的SQLite不需要該項(xiàng) - 1.2.14 DATABASE_USER:默認(rèn)值:""
連接數(shù)據(jù)庫(kù)時(shí)使用的用戶名疾瓮,SQLite不需要該項(xiàng) - 1.2.15 DATE_FORMAT:默認(rèn)值:"N j, Y"
對(duì)日期字段使用的默認(rèn)日期格式 - 1.2.16 DEBUG:默認(rèn)值:False
一個(gè)開(kāi)關(guān),用于是否打開(kāi)調(diào)試模式 - 1.2.17 DEFAULT_CHARSET:默認(rèn)值:"utf-8"
設(shè)置所有HttpResponse對(duì)象的默認(rèn)字符集飒箭,構(gòu)建Content-Type頭數(shù)據(jù) - 1.2.18 DEFAULT_CONTENT_TYPE:默認(rèn)值:"text/html"
設(shè)置所有HttpResponse對(duì)對(duì)象的默認(rèn)數(shù)據(jù)格式狼电,構(gòu)建Content-type頭數(shù)據(jù) - 1.2.19 EMAIL_HOST:默認(rèn)值:“l(fā)ocalhost”
用來(lái)發(fā)送e-mail電子郵件的主機(jī)
1.2.20 EMAIL_HOST_PASSWORD:默認(rèn)值:""
EMAIL_HOST選項(xiàng)中定義的SMPT郵箱服務(wù)器登錄密碼,如果為空~Django就不會(huì)嘗試進(jìn)行認(rèn)證 - 1.2.21 EMAIL_HOST_USER:默認(rèn)值:""
EMAIL_HOST選項(xiàng)中定義的SMTP服務(wù)器使用的用戶名弦蹂,如果為空~Django將不會(huì)嘗試進(jìn)行認(rèn)證 - 1.2.22 EMAIL_PORT:默認(rèn)值:25
EMAIL_HOST選項(xiàng)指定的SMTP服務(wù)器使用的端口號(hào) - 1.2.23 ENABLE_PSYCO:默認(rèn)值False
確定是否使用pscyo優(yōu)化python代碼肩碟,需要依賴psyco模塊
1.2.24 IGNORABLE_404_STARTS:默認(rèn)值: ('/cgi-bin/', '/_vti_bin', '/_vti_inf')
一個(gè)字符串 tuple . 以該tuple中元素為開(kāi)頭的 URL 應(yīng)該被 404 e-mailer 忽略
1.2.25 INSTALLED_APPS:默認(rèn)值: () (空的 tuple)
一個(gè)字符串tuple ,內(nèi)容是本 Django 安裝中的所有應(yīng)用. 每個(gè)字符串應(yīng)該是一個(gè)包含Django應(yīng)用程序的Python包的路徑全稱, django-admin.py startapp 會(huì)自動(dòng)往其中添加內(nèi)容.
1.2.26 INTERNAL_IPS:默認(rèn)值: () (空的 tuple)
一個(gè) ip 地址的 tuple(字符串形式), 它:
當(dāng) DEBUG 為 True 時(shí),參閱調(diào)試務(wù)注解
接收 X 頭(若 XViewMiddleware 已安裝), (參閱 middleware 文檔)
JING_PATH
默認(rèn)值: '/usr/bin/jing'
1.2.27 LANGUAGE_CODE:默認(rèn)值: 'en-us'
表示默認(rèn)語(yǔ)言的一個(gè)字符串. 必須是標(biāo)準(zhǔn)語(yǔ)言格式. 舉例來(lái)說(shuō), U.S. English 就是 "en-us". 參閱internationalization docs.
1.2.28 LANGUAGES:默認(rèn)值: 一個(gè) tuple (內(nèi)容為所有可用語(yǔ)言). 目前它的值是:
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:默認(rèn)值: ADMINS (不論 ADMINS 是否已經(jīng)設(shè)置)
一個(gè)和 ADMINS 同樣格式的 tuple , 當(dāng) SEND_BROKEN_LINK_EMAILS=True 時(shí), 這些人有權(quán)接收死鏈接通知信息.
1.2.30 MEDIA_ROOT:默認(rèn)值: '' (空的字符串)
一個(gè)絕對(duì)路徑, 用于保存媒體文件
1.2.31 MEDIA_URL默認(rèn)值: '' (空的字符串)
處理媒體服務(wù)的URL(媒體文件來(lái)自 MEDIA_ROOT)
1.2.32 PREPEND_WWW:默認(rèn)值: False
是否為沒(méi)有 "www." 前綴的域名添加 "www." 前綴. 當(dāng)且僅當(dāng)安裝有 CommonMiddleware 后該選項(xiàng)才有效
1.2.33 ROOT_URLCONF默認(rèn)值: Not defined
一個(gè)字符串,表示你的根 URLconf 的模塊名. 舉例來(lái)說(shuō):"mydjangoapps.urls". 參閱 Django如何處理一個(gè)請(qǐng)求.
1.2.24 ECRET_KEY默認(rèn)值: '' (空的字符串)
一個(gè)密碼. 用于為密碼哈希算法提供一個(gè)種子.將其設(shè)置為一個(gè)隨機(jī)字符串 -- 越長(zhǎng)越好. django-admin.py startproject 會(huì)自動(dòng)給你創(chuàng)建一個(gè).
1.2.25 SEND_BROKEN_LINK_EMAILS默認(rèn)值: False
當(dāng)有人從一個(gè)有效Django-powered頁(yè)面訪問(wèn)另一個(gè)Django-powered頁(yè)面時(shí)發(fā)現(xiàn)404錯(cuò)誤(也就是發(fā)現(xiàn)一個(gè)死鏈接)時(shí), 是否發(fā)送一封郵件給 MANAGERS. 當(dāng)且僅當(dāng) 安裝有 CommonMiddleware 時(shí)該選項(xiàng)才有效
1.2.26 SERVER_EMAIL
默認(rèn)值: 'root@localhost'
用來(lái)發(fā)送錯(cuò)誤信息的郵件地址, 比如發(fā)送給 ADMINS 和 MANAGERS 的郵件.
1.2.27 SESSION_COOKIE_AGE:默認(rèn)值: 1209600 (2周, 以秒計(jì))
session cookies 的生命周期, 以秒計(jì). 參閱 session docs.
1.2.28 SESSION_COOKIE_DOMAIN:默認(rèn)值: None
session cookies 有效的域. 將其值設(shè)置為類似 ".lawrence.com" 這樣 cookie 就可以跨域生效, 或者使用None 作為一個(gè)標(biāo)準(zhǔn)的域 cookie. 參閱 session docs.
1.2.29 SESSION_COOKIE_NAME默認(rèn)值: 'sessionid'
session 使用的cookie 名字. 參閱 session docs.
1.2.30 SESSION_SAVE_EVERY_REQUEST默認(rèn)值: False
是否每次請(qǐng)求都保存session
1.2.31 SITE_ID默認(rèn)值: Not defined
是一個(gè)整數(shù), 表示 django_site 表中的當(dāng)前站點(diǎn). 當(dāng)一個(gè)數(shù)據(jù)包含多個(gè)站點(diǎn)數(shù)據(jù)時(shí),你的程序可以據(jù)此 ID 訪問(wèn)特定站點(diǎn)的數(shù)據(jù).
1.2.32 TEMPLATE_DEBUG默認(rèn)值: False
一個(gè)布爾值,用來(lái)開(kāi)關(guān)模板調(diào)試模式.若設(shè)置為 True, 如果有任何 TemplateSyntaxError,一個(gè)詳細(xì)的錯(cuò)誤報(bào)告信息頁(yè)將被顯示給你.這個(gè)報(bào)告包括有關(guān)的模板片斷,相應(yīng)的行會(huì)自動(dòng)高亮.
注意 Django 僅在 DEBUG 為 True 時(shí)顯示這個(gè)信息頁(yè)面.
1.2.33 TEMPLATE_DIRS默認(rèn)值: () (空的 tuple)
模板源文件目錄列表,按搜索順序. 注意要使用 Unix-風(fēng)格的前置斜線(即'/'), 即便是在 Windows 上.
1.2.34 TEMPLATE_LOADERS默認(rèn)值:('django.template.loaders.filesystem.load_template_source',)
一個(gè)元素為可調(diào)用對(duì)象(字符串形式的)的 tuple. 這些對(duì)象知道如何導(dǎo)入 templates 從各種源中. 參閱 template documentation.
1.2.35 EMPLATE_STRING_IF_INVALID默認(rèn)值: '' (空的字符串)
輸出文本, 作為一個(gè)字符串. 模板系統(tǒng)將會(huì)在出錯(cuò) (比如說(shuō)拼錯(cuò)了) 時(shí)使用該變量. 參閱 How invalid variables are handled.
1.2.36 TIME_FORMAT默認(rèn)值: 'P' (舉例來(lái)說(shuō) 4 p.m.)
Django admin change-list 使用的默認(rèn)時(shí)間格式. 有可能系統(tǒng)的其它部分也使用該格式. 參閱 allowed date format strings.
1.2.37 TIME_ZONE默認(rèn)值: 'America/Chicago' (我們可以用 'Asia/Shanghai PRC' )
一個(gè)表示當(dāng)前時(shí)區(qū)的字符串. 參閱 選擇項(xiàng)列表.
Django 據(jù)此設(shè)置轉(zhuǎn)換所有的日期/時(shí)間 -- 并不考慮服務(wù)器的時(shí)區(qū)設(shè)置. 舉例來(lái)說(shuō), 一臺(tái)服務(wù)器可以服務(wù)多個(gè)Django-powered 站點(diǎn),每個(gè)站點(diǎn)使用一個(gè)獨(dú)立的時(shí)區(qū)設(shè)置.
1.2.38 USE_ETAGS默認(rèn)值: False
一個(gè)布爾值.指定是否輸出 "Etag" 頭. 這個(gè)選項(xiàng)可以節(jié)省網(wǎng)絡(luò)帶寬,但損失性能. 只有安裝 CommonMiddleware 后這個(gè)選項(xiàng)才有用(參閱 middleware 文檔)
未完待續(xù):請(qǐng)看下一節(jié)5.2 模型和數(shù)據(jù)庫(kù)交互