Django系列==4、settings註釋
阿新 • • 發佈:2020-09-03
import os import sys # Build paths inside the project like this: os.path.join(BASE_DIR, ...) # 這裡用到了python中一個神奇的變數"__file__",這個變數可以獲取到當前檔案的路徑(含檔名) # 再來一個os.path.dirname()就是獲得上一級目錄 # "BASE_DIR"就是工程根目錄 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 如果包含外部的App或者多個App放在一個目錄裡,一般需要把這個目錄右鍵Mark成Source Root後,可能還需要將其新增到Python路徑中,否則執行manage.py會報錯No module named 'xx'.# 比如"extraapps"是外部APP上級目錄Python包(需Mark成Source Root) # 1)sys.path.insert(0, 'path'):定義搜尋路徑的優先順序,序號從0開始,表示最大優先順序,屬於臨時搜尋路徑,程式退出後失效 # 2)sys.path.append('path'):與insert()類似,只不過這是追加方式 # 如:sys.path.append(os.path.join(BASE_DIR, 'extraapps')) # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/# 產品金鑰。建立Django專案時自動分配的產品金鑰,請使用原自動分配的產品金鑰替換此行!! SECRET_KEY = 'ug4o-53gk-tuxn@@69g_jr8aqq%&e183kr=xw6reg7247&jam=' # 上線時必須將DEBUG設為False DEBUG = True # 指定被訪問的主機。若元素為'*',表示所有同一區域網內的網路均可被訪問 ALLOWED_HOSTS = ['localhost', '127.0.0.1'] # App註冊。新建的app務必在此註冊! INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', # 'polls', # 我的APP # 'django.contrib.humanize', # 人類可讀性過濾器 # 'django.contrib.sitemaps', # 網站地圖 ] # 自定義的auth APP的User模型,繼承抽象模型AbstractUser # AUTH_USER_MODEL = 'appname.UserModelName' # 自定義的使用者登入驗證後端,繼承ModelBackend類,重寫authenticate()方法 # AUTHENTICATION_BACKENDS = ['apps.myuser.views.CustomBackend', ] # 中介軟體 MIDDLEWARE = [ # 'django.middleware.cache.UpdateCacheMiddleware', # 快取更新,必須在第一個!(快取全站時) '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', # 依賴於會話Session 'django.middleware.clickjacking.XFrameOptionsMiddleware', # 防止點選劫持 # 'django.middleware.cache.FetchFromCacheMiddleware', # 快取讀取,必須在最後一個!(快取全站時) ] ROOT_URLCONF = 'mysite.urls' # URL路由主檔案,這裡需要據實修改 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], # 公共模板 'APP_DIRS': True, # 多個APP分別建立自己的模板路徑,方法同靜態檔案(見後文) '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', ], }, }, ] WSGI_APPLICATION = 'mysite.wsgi.application' # 這裡需要據實修改 # 資料庫。可配置多個,"default"為必須,但可以為空 # https://docs.djangoproject.com/en/1.11/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } # 多資料庫路由。寫入自定義的路由Router類路徑,為空則使用"default"資料庫 DATABASE_ROUTERS = [] # 密碼驗證 # https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ { 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', }, { 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', }, { 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', }, { 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', }, ] # 國際化 # https://docs.djangoproject.com/en/1.11/topics/i18n/ LANGUAGE_CODE = 'en-us' # 系統語言。中文簡體是'zh-hans'(此時USE_I18N必須為True),Admin後臺管理系統的頁面語言隨之改變 TIME_ZONE = 'Asia/Shanghai' # 時區 USE_I18N = True # 國際翻譯 USE_L10N = True # 本地化 USE_TZ = False # 若使用了本地時間,必須設為False!!(預設值True) # 郵箱服務配置 EMAIL_HOST = 'xxx.com.cn' # 傳送者郵箱伺服器 EMAIL_PORT = 25 EMAIL_HOST_USER = '' # 傳送者使用者名稱(郵箱地址) EMAIL_HOST_PASSWORD = '' # 傳送者密碼 EMAIL_USE_SSL = False # 預設值False # 靜態檔案配置 (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.11/howto/static-files/ # 靜態檔案的訪問目錄,自動指向"STATIC_ROOT"或"STATICFILES_DIRS"的目錄值。用於程式中,如{% static '靜態檔案指向目錄下的子路徑' %} # 這裡的靜態檔案URL,即/static/通常用於模板中呼叫,另外也用於Apache或Nginx配置檔案中的靜態檔案訪問配置(生產策略!) # 模板呼叫示例:{% static 'images/123.jpg' %} STATIC_URL = '/static/' # 這裡的靜態檔案ROOT是生產環境根目錄!僅用於生產!當執行"python manage.py collectstatic"的時候,會自動將STATICFILES_DIRS以及各APP中static的所有的檔案複製收集到STATIC_ROOT # 把這些檔案放到一起是為了用Apache、Nginx等上線部署的時候更方便 STATIC_ROOT = os.path.join(BASE_DIR, 'static') # 多個APP的靜態檔案配置。不能與STATIC_ROOT衝突!先在各個APP下新建static資料夾,然後把JS、CSS、Image等靜態檔案放在該資料夾下,例如:apps/app1/static/js(css,images)、apps/app2/static/js(css,images)等。 # STATICFILES_DIRS = [os.path.join(BASE_DIR, 'apps', 'app1', 'static'), os.path.join(BASE_DIR, 'apps', 'app2', 'static'), ] # 媒體檔案(使用者上傳的檔案)配置,類似於上面的靜態檔案配置 # 不能像靜態檔案那樣呼叫,而是先在settings中進行模板配置,即在"TEMPLATES"中的"context_processors"裡新增'django.template.context_processors.media' # (除錯策略!手動指定檢視訪問media檔案目錄,部署生產請註釋掉) 新增URL路由,如:url(r'^media/(?P<path>.*)$', static.serve, {'document_root': settings.MEDIA_ROOT}) # 模板呼叫示例:{{ MEDIA_URL }}{{ modelobj.fieldname }} MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') # 快取後端配置(Django支援許多開箱即用的快取後端) # Django預設快取後端是本地記憶體(LocMemCache)。虛擬DummyCache用於開發(實際上並不快取,它只是實現快取介面而不做任何事情。) # Django支援的快取型別:Memcached(MemcachedCache)、本地記憶體(LocMemCache)、資料庫(DatabaseCache)、檔案(FileBasedCache)、虛擬(DummyCache) # Memcached快取資料庫下載與安裝教程:http://www.runoob.com/memcached/window-install-memcached.html(菜鳥教程提供) # 下載安裝Memcached本身後,您還需要安裝其依賴模組。最常見的兩個依賴模組是python-memcached和pylibmc(pip安裝) # 設定快取後端後,使用快取的方式:最簡單是快取整個站點(如下)、快取每個檢視(使用裝飾器@cache_page(expire, cache='default'))等 # 在中介軟體列表中的[開頭]和[末尾]新增如下2箇中間件:'django.middleware.cache.UpdateCacheMiddleware'和'django.middleware.cache.FetchFromCacheMiddleware' # 測試,進入Python shell: # >>> from django.core.cache import cache # >>> cache.set('test', 'successful', 60) 第一個引數是key,第二個引數value,第三個引數是過期時間(秒) # >>> cache.get('test') 其他方法:set_many(),get_many(),delete(),delete_many(),clear() # CACHES = { # 'default': { # 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', # 取決於您選擇的Memcached繫結 # 'LOCATION': ['127.0.0.1:11211', ], # 快取後端伺服器位置,支援分散式,可多個 # 'TIMEOUT': 5 * 60, # 快取超時,預設300s # 'OPTIONS': { # 'server_max_value_length': 2 * 1024 * 1024, # 快取最大值(這裡的鍵值根據快取型別不同而變化,一般預設也可) # }, # 'CACHE_MIDDLEWARE_ALIAS': 'DJCACHE', # 用於儲存的快取別名 # 'CACHE_MIDDLEWARE_SECONDS': 5 * 60, # 每個頁面應快取的秒數 # 'CACHE_MIDDLEWARE_KEY_PREFIX': '', # 快取鍵字首。如果使用相同的Django在多個站點之間共享快取,將其設定為站點名稱(或其他)以防止發生金鑰衝突 # } # } # 會話使用的快取(CACHES),預設"default" # SESSION_CACHE_ALIAS = "default" # 會話快取期限,預設2周 # SESSION_COOKIE_AGE = 1209600 # 會話生存期設定,瀏覽器關閉,則會話失效(可能對Chrome瀏覽器無效)。在登入檢視get請求中新增語句"request.session.set_expiry(0)",對Chrome會有效 SESSION_EXPIRE_AT_BROWSER_CLOSE = True # 預設False