Django框架的中的setting.py文件說明詳解
1.加載數(shù)據(jù)庫,數(shù)據(jù)庫的配置不能寫死在seting.py文件中,下面的方式是讀取另外一個(gè)文件,配置數(shù)據(jù)庫:
config = ''
with open(os.path.join(BASE_DIR, 'config/config.json'), 'rt') as f:
config = json.load(f)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'szrqgl',
'USER': config['db_user'],
'PASSWORD': config['db_pwd'],
'HOST': config['db_host'],
'POST': config['db_port']
}
}
上面的BASE_DIR一般使用的都是默認(rèn)值,即:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
具體操作是創(chuàng)建一個(gè)config文件夾,該文件夾和你這個(gè)項(xiàng)目包同級(jí),然后在其下面創(chuàng)建一個(gè)config.json文件,文件內(nèi)容如下:
{
"db_user": "root",
"db_pwd": "123456",
"db_host": "127.0.0.1",
"db_port": "3306"
}
在上面的代碼中,ENGINE要說明一下,官方提供了針對(duì)不同數(shù)據(jù)庫的的不同操作引擎,以下是經(jīng)常用的幾個(gè):
sqlite數(shù)據(jù)庫:'django.db.backends.sqlite3',
postgreSQL數(shù)據(jù)庫:'django.db.backends.postgresql_psycopg2',
mysql數(shù)據(jù)庫:'django.db.backends.mysql'
oracle數(shù)據(jù)庫:'django.db.backends.oracle'
2.時(shí)區(qū)設(shè)置和字符集設(shè)置,一般用的都是下面三個(gè):
設(shè)置保存到數(shù)據(jù)庫時(shí)間類型是否為UTC時(shí)間,如果不需要請(qǐng)?jiān)O(shè)置為false,默認(rèn)為true:USE_TZ = True
設(shè)置時(shí)區(qū):TIME_ZONE = 'Asia/Shanghai'
設(shè)置語言:LANGUAGE_CODE = 'zh-hans'
設(shè)置字符集:DEFAULT_CHARSET = "utf-8"
3.設(shè)置國(guó)際化,根據(jù)個(gè)人需要進(jìn)行設(shè)置:
國(guó)際化:USE_I18N = True
相同內(nèi)容被不同時(shí)區(qū)地區(qū)的用戶訪問時(shí),是否以不同格式內(nèi)容展示(例如時(shí)間,日期,數(shù)字):USE_L10N = True
4.部署配置:
調(diào)試模式是否開啟:DEBUG = True
訪問web服務(wù)的的Ip配置:ALLOWED_HOSTS = ['*']
部署的時(shí)候請(qǐng)修改DEBUG和ALLOWED_HOSTS的值,一般將其修改為FALSE和指定ip,例如['127.0.0.1']
5.在setting.py中定義全局變量,該變量的變量名需要全部大寫,否則會(huì)引用不到:
CONTEXTBOOL= False
6.app的安裝配置,即INSTALLED_APPS設(shè)置,我們新建的項(xiàng)目需要添加到該配置下,每個(gè)配置的意義以后說明:
django.contrib.admin —— 管理站點(diǎn)。
django.contrib.auth —— 認(rèn)證系統(tǒng)。
django.contrib.contenttypes —— 用于內(nèi)容類型的框架。
django.contrib.sessions —— 會(huì)話框架,session數(shù)據(jù)可以在數(shù)據(jù)庫中的django_session表中查看。
django.contrib.messages —— 消息框架。
django.contrib.staticfiles —— 管理靜態(tài)文件的框架。
例如:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'demo1', ]
7.django的中間件配置,即MIDDLEWARE設(shè)置,所謂中間件就是從用戶請(qǐng)求到用戶請(qǐng)求結(jié)束期間所做的操作,即用戶的請(qǐng)求會(huì)次從上到下依次執(zhí)行MIDDLEWARE中的配置,然后服務(wù)器響應(yīng)用戶的時(shí)候會(huì)再次從下至上依次執(zhí)行,和Java的Filter很相像:
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
一般的django配置如上圖,如果需要自己添加中間件配置的,也可自己添加,這里不再多說。
8.setting中的加密鹽:
SECRET_KEY = 'i&&2$s&#%7npev^#uix==kis+h$4$ozscefiaw1c%p^+1c(l&6'
該配置是django的安全配置,防止攻擊用的,該值是startProject時(shí)用系統(tǒng)的某個(gè)算法產(chǎn)生的.
9.靜態(tài)文件目錄配置(重中之重)
# 所有靜態(tài)文件放置目錄,在配置nginx的時(shí)候,nginx的靜態(tài)資源要指向這里。
STATIC_ROOT = os.path.join(BASE_DIR, 'static').replace('\\', '/')
# 別名,這個(gè)別名指的是在html引用的名稱
STATIC_URL = '/commonstatic/'
例如,下面的這個(gè)static實(shí)際上就是commonstatic,其在html里面顯示如下:
{% block styles %}
<link rel="stylesheet" href="{% static '/plugins/bootstrapValidator/bootstrapValidator.min.css' %}" rel="external nofollow" >
{% endblock %}

# 在django中指定靜態(tài)文件的目錄所在地
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'commonstatic/').replace('\\', '/'),
)

一般情況下,上述的靜態(tài)文件配置上面幾乎可通用,絕少數(shù)情況下需要另配。
10.session會(huì)話配置(下面的配置會(huì)保存在數(shù)據(jù)庫的django_session中):
SESSION_ENGINE = 'django.contrib.sessions.backends.db' # 引擎(默認(rèn)) SESSION_COOKIE_NAME = "sessionid" # Session的cookie保存在瀏覽器上時(shí)的key,即:sessionid=隨機(jī)字符串(默認(rèn)) SESSION_COOKIE_PATH = "/" # Session的cookie保存的路徑(默認(rèn)) SESSION_COOKIE_DOMAIN = None # Session的cookie保存的域名(默認(rèn)) SESSION_COOKIE_SECURE = False # 是否Https傳輸cookie(默認(rèn)) SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http傳輸(默認(rèn)) SESSION_COOKIE_AGE = 60 * 30 # Session的cookie失效日期(30min)(默認(rèn)) SESSION_EXPIRE_AT_BROWSER_CLOSE = True # 是否關(guān)閉瀏覽器使得Session過期(默認(rèn)) SESSION_SAVE_EVERY_REQUEST = True # 是否每次請(qǐng)求都保存Session,默認(rèn)修改之后才保存(默認(rèn))
setting配置文件的內(nèi)容大致如上,具體每個(gè)配置的作用會(huì)在以后的文章中進(jìn)行說明!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python一行代碼識(shí)別增值稅發(fā)票實(shí)現(xiàn)示例
這篇文章主要為大家介紹了Python一行代碼識(shí)別增值稅發(fā)票實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
利用Pandas讀取表格行數(shù)據(jù)判斷是否相同的方法
這篇文章主要給大家介紹了關(guān)于利用Pandas讀取表格行數(shù)據(jù)判斷是否相同的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
python用什么編輯器進(jìn)行項(xiàng)目開發(fā)
在本篇文章里小編給大家整理的是一篇關(guān)于python開發(fā)用的編輯器詳細(xì)介紹,有需要的朋友們可以參考下哎。2020-06-06
Python超有趣實(shí)例通過冒泡排序來實(shí)現(xiàn)LOL厄斐琉斯控槍
冒泡排序是一種簡(jiǎn)單的排序算法,它也是一種穩(wěn)定排序算法。其實(shí)現(xiàn)原理是重復(fù)掃描待排序序列,并比較每一對(duì)相鄰的元素,當(dāng)該對(duì)元素順序不正確時(shí)進(jìn)行交換。一直重復(fù)這個(gè)過程,直到?jīng)]有任何兩個(gè)相鄰元素可以交換,就表明完成了排序2022-05-05

