Django settings.py配置文件注解(含靜態文件和上傳文件配置)


基於Django1.11配置文件settings.py

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

 

  至此,轉載請注明出處。

[ 本站相關鏈接:>>Django部署 ]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM