第二十六篇,Django配置信息

基本信息配置

一個基本的項目必須具備的基本配置信息有:項目路徑,密鑰配置,域名訪問權限,App列表和中間件,都在setting.py項目下。

import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))  #項目路徑
SECRET_KEY = '5f_^=cvm9=4&^mons#f@xz*37sjw2e##bvrju7s#k^egn39_x*' #密鑰配置
DEBUG = True #調試模式
ALLOWED_HOSTS = [] #域名訪問權限
INSTALLED_APPS = [  #App列表
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'index',
    'user',
]

項目路徑:主要通過os模塊讀取當前項目在系統的具體路徑,創建項目的時候自動生成。
密鑰配置:隨機值,創建項目的時候自動生成,用於數據的加密處理,提高系統的安全性,避免遭遇破壞。
調試模式:值爲布爾類型,調試階段爲True,調試過程會自動根據代碼是否修改,進行檢測結果是否執行刷新重啓系統,如果部署完畢,可以改爲False。
域名訪問權限:設置可以訪問的域名,默認值爲空,當調試模式爲True且域名訪問權限爲空的時候,項目就只能在本地127.0.0.1或者localhost在瀏覽器上訪問,當調試模式爲False的時候,域名訪問權限爲必填項否則無法啓動,如果想允許所有域名訪問你弟時候,可以設置ALLOWED_HOSTS = [’*’]
App列表:告訴我們Django有哪些App,很多都是項目創建的時候就已經有的配置信息如:
== admin, auth,contenttypes,sessions,messages,staticfiles。這幾個都是Django內置的應用功能,各個功能說明如下:
admin:內置的後臺管理系統。
auth:內置的用戶認證系統。
conternttypes:記錄項目中所有model元素據。
sessions:用於標識當前訪問網站的用戶身份,記錄相關用戶信息。
messages:消息提示功能。
staticfiles:查找靜態資源路徑。==
因爲我們之間創建了兩個App:index,user。所以我們也需要添加進去結果如下:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'index',
    'user',
]

靜態資源

靜態資源包括css與JavaScript等圖片及資源文件。
CSS:層疊樣式表(英文全稱:Cascading Style Sheets)是一種用來表現HTML(標準通用標記語言的一個應用)或XML(標準通用標記語言的一個子集)等文件樣式的計算機語言。CSS不僅可以靜態地修飾網頁,還可以配合各種腳本語言動態地對網頁各元素進行格式化。
JavaScript:JavaScript(簡稱“JS”) 是一種具有函數優先的輕量級,解釋型或即時編譯型的編程語言。雖然它是作爲開發Web頁面的腳本語言而出名的,但是它也被用到了很多非瀏覽器環境中,JavaScript 基於原型編程、多範式的動態腳本語言,並且支持面向對象、命令式和聲明式(如函數式編程)風格。
這些靜態文件的存在放主要由配置文件settings.py設置:

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/
STATIC_URL = '/static/'

上述表示將靜態資源存放在文件夾static中,這個文件只能放入App中,項目啓動的時候,Django會根據資源路勁存放去查找相關資源文件,隨便找個圖片放入static文件下面,運行項目,訪問:http://127.0.0.1:8000/static/1.jpg.
在這裏插入圖片描述
在這裏插入圖片描述記得static文件如果放在項目的更目錄下,在瀏覽器會顯示404無法訪問,如果想在根目錄下存放當然也可以,就需要在配置文件setting.py中設置:

'DIRS': [os.path.join(BASE_DIR, 'templates'),
os.path.join(BASE_DIR,'index/templates')]

設置完成後分別在根目錄下創建templates文件夾和index的App下創建templates文件夾。啓動項目後輸入:http://127.0.0.1:8000/static/templates/1.jpg或者http://127.0.0.1:8000/index/templates/1.jpg都可以實現上述效果。可以看出來:STATIC_URL是必須配置屬性的,如果沒有配置STATICFILES_DIRS,就只能識別App裏的static的靜態資源文件夾。而STATICFILES_DIRS是可以選擇的配置屬性,屬性值爲列表或者元組格式,每個分別代表一個靜態資源文件夾。另外還有靜態資源STATIC_ROOT,是用來方便服務器上部署項目,實現服務器和項目之間的映射。具體可以參考STATIC_URL、STATIC_ROOT、STATICFILES_DIRS三者區別

模板路徑

模板是一種較爲特殊的HTML文檔,這個文檔嵌入了一些能使python識別的變量和指令,然後程序解析這些變量和指令,生成完整的HTML網頁返回給用戶。在創建項目的時候就已經生成了模板配置的信息:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates'),
                 os.path.join(BASE_DIR,'index/templates')]
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

BACKEND:定義模板引擎,用於識別模板裏面的變量和指令。
DIRS:設置模板所在路徑,告訴Django在哪查找模板的位置,默認爲空列表。
APP_DIRS:是否在App裏查找模板文件。
OPTIONS:用於填充在RequestContext中上下文,調用函數。

數據庫配置

數據庫配置是選擇項目所使用的數據庫的類型,不同的數據庫需要設置不同的數據庫引擎用於實現項目與數據庫的連接,Django就提供了4個數據庫引擎。

django.db.backends.mysql
django.db.backends.postgresql
django.db.backends.sqlite3
django.db.backends.oracle

項目創建的時候默認的是使用sqllite3數據庫:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'os.path.join(BASE_DIR,'db.sqlite3')'
        }
   }

假設我們使用MySQL數據庫時,首先要安裝連接模塊,直接在cmd終端進行安裝:pip install mysqlclient當然也可以在官網上直接下載安裝也是可以的。
安裝完畢後對配置文件進行修改:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'dd',
        'USER': 'root',
        'PASSWORD':'123456',
        'HOST':'127.0.0.1',
        'PORT':'3306',
    }

上述代碼表述我連接的是本地的端口號3306的dd數據庫,賬號密碼別忘了輸入,當然也可以連接多個數據庫,這裏就自行嘗試,只需要設置不同的鍵值對就可以實現了。

中間件

中間件是處理Django的request和response對象的鏈子。當用戶在網站中進行單擊某個按鈕等操作是,是用戶像網站發送請求,而網頁會根據用戶的操作返回相關的網頁內容,這個過程稱爲響應。

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.middleware.locale.LocaleMiddleware', #中文顯示
]

項目中添加’django.middleware.locale.LocaleMiddleware’,使得Django的內置的功能支持中文顯示。配置屬性的數據格式爲列表類型,每個中間件的設置順序是固定的,隨意變更容易導致程序異常。
SecurityMiddleware:內置的安全機制,保護用戶與網站的通信安全。
SessionMiddleware:會話Session功能。
CommonMiddleware:處理請求信息,規劃請求內容。
CsrfViewMiddleware:開啓CSRF防護功能。
AuthenticationMiddleware:開啓內置的用戶認證系統。
MessageMiddleware:開啓內置的信息提示功能。
XFrameOptionsMiddleware:防止惡意程序劫持。
LocaleMiddleware:支持中文語言顯示。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章