最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

django中的setting最佳配置小結(jié)

 更新時(shí)間:2017年11月21日 10:16:58   作者:布吉島丶  
setting配置也經(jīng)常將一些配置混淆今天主要是介紹django中的setting最佳配置小結(jié),需要的朋友參考下吧

Django settings詳解

1.基礎(chǔ)

DJANGO_SETTING_MODULE環(huán)境變量:讓settings模塊被包含到python可以找到的目錄下,開發(fā)情況下不需要,我們通常會在當(dāng)前文件夾運(yùn)行,python可以搜索到。如果需要運(yùn)行在其他服務(wù)器上,就必須指定DJANGO_SETTINGS_MODULE變量。

2.默認(rèn)設(shè)定

一個django的settings文件不需要我們手動去設(shè)置所有項(xiàng)目,因?yàn)橄到y(tǒng)已經(jīng)默認(rèn)設(shè)置好了。我們只需要修改我們使用的設(shè)

定就好了。默認(rèn)的設(shè)置在django/conf/global_settings.py文件中。django在編譯時(shí),先載入global_settings.py中的配置,然后加載指定的settings文件,重寫改變的設(shè)定。

好了,步入正文。

前面的隨筆中我們經(jīng)常會改setting配置也經(jīng)常將一些配置混淆今天主要是將一些常見的配置做一個匯總。

setting配置匯總

1、app路徑

INSTALLED_APPS = [
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'app1.apps.App1Config', 
 # 默認(rèn)已有 如果沒有只要添加app名稱即可 例如: 'app1'
 # 新建的應(yīng)用都要在這里添加
]

2、數(shù)據(jù)庫配置

如果使用django的默認(rèn)sqlite3數(shù)據(jù)庫則不需要改

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

如果使用mysql數(shù)據(jù)庫需要將上述數(shù)據(jù)庫注掉修改如下

DATABASES = {
 'default': {  
 'ENGINE': 'django.db.backends.mysql',
 'NAME': 'blog', #你的數(shù)據(jù)庫名稱 數(shù)據(jù)庫需要自己提前建好
 'USER': 'root', #你的數(shù)據(jù)庫用戶名
 'PASSWORD': '', #你的數(shù)據(jù)庫密碼
 'HOST': '', #你的數(shù)據(jù)庫主機(jī),留空默認(rèn)為localhost
 'PORT': '3306', #你的數(shù)據(jù)庫端口
 }
}

并且需要在應(yīng)用的__init__.py文件添加

import pymysql
pymysql.install_as_MySQLdb()

詳情可以查看:http://m.fzitv.net/article/128674.htm

3、sql語句

LOGGING = {
 'version': 1,
 'disable_existing_loggers': False,
 'handlers': {
 'console':{
  'level':'DEBUG',
  'class':'logging.StreamHandler',
 },
 },
 'loggers': {
 'django.db.backends': {
  'handlers': ['console'],
  'propagate': True,
  'level':'DEBUG',
 },
 }
} 

當(dāng)你的操作與數(shù)據(jù)庫相關(guān)時(shí) 會將我們的寫的語句翻譯成sql語句在服務(wù)端打印。

4、靜態(tài)文件目錄

STATIC_URL = '/static/' #調(diào)用時(shí)目錄
STATICFILES_DIRS=[
 os.path.join(BASE_DIR,"static"), #具體路徑
]

5、如果數(shù)據(jù)庫中的UserInfo(用戶表)繼承django內(nèi)置AbstractUser

1)model需導(dǎo)入

from django.contrib.auth.models import AbstractUser

2)配置文件

AUTH_USER_MODEL = "應(yīng)用名.UserInfo"

6、中間件

自己寫的中間件,例如在項(xiàng)目中的md文件夾下md.py文件中的M1與M2兩個中間件

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',
 'md.md.M1',
 'md.md.M2',
]

注意自己寫的中間件,配置要寫在系統(tǒng)中的后面

7、session存儲的相關(guān)配置

1)數(shù)據(jù)庫配置(默認(rèn))

Django默認(rèn)支持Session,并且默認(rèn)是將Session數(shù)據(jù)存儲在數(shù)據(jù)庫中,即:django_session 表中。
配置 settings.py
 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 = 1209600    # Session的cookie失效日期(2周)(默認(rèn))
 SESSION_EXPIRE_AT_BROWSER_CLOSE = False   # 是否關(guān)閉瀏覽器使得Session過期(默認(rèn))
 SESSION_SAVE_EVERY_REQUEST = False   # 是否每次請求都保存Session,默認(rèn)修改之后才保存(默認(rèn))

2)緩存配置

配置 settings.py
 SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # 引擎
 SESSION_CACHE_ALIAS = 'default'    # 使用的緩存別名(默認(rèn)內(nèi)存緩存,也可以是memcache),此處別名依賴緩存的設(shè)置
 SESSION_COOKIE_NAME = "sessionid"   # Session的cookie保存在瀏覽器上時(shí)的key,即:sessionid=隨機(jī)字符串
 SESSION_COOKIE_PATH = "/"    # Session的cookie保存的路徑
 SESSION_COOKIE_DOMAIN = None    # Session的cookie保存的域名
 SESSION_COOKIE_SECURE = False    # 是否Https傳輸cookie
 SESSION_COOKIE_HTTPONLY = True    # 是否Session的cookie只支持http傳輸
 SESSION_COOKIE_AGE = 1209600    # Session的cookie失效日期(2周)
 SESSION_EXPIRE_AT_BROWSER_CLOSE = False   # 是否關(guān)閉瀏覽器使得Session過期
 SESSION_SAVE_EVERY_REQUEST = False   # 是否每次請求都保存Session,默認(rèn)修改之后才保存

3)默認(rèn)配置

配置 settings.py
 SESSION_ENGINE = 'django.contrib.sessions.backends.file' # 引擎
 SESSION_FILE_PATH = None     # 緩存文件路徑,如果為None,則使用tempfile模塊獲取一個臨時(shí)地址tempfile.gettempdir() 
 SESSION_COOKIE_NAME = "sessionid"    # Session的cookie保存在瀏覽器上時(shí)的key,即:sessionid=隨機(jī)字符串
 SESSION_COOKIE_PATH = "/"     # Session的cookie保存的路徑
 SESSION_COOKIE_DOMAIN = None    # Session的cookie保存的域名
 SESSION_COOKIE_SECURE = False    # 是否Https傳輸cookie
 SESSION_COOKIE_HTTPONLY = True    # 是否Session的cookie只支持http傳輸
 SESSION_COOKIE_AGE = 1209600    # Session的cookie失效日期(2周)
 SESSION_EXPIRE_AT_BROWSER_CLOSE = False   # 是否關(guān)閉瀏覽器使得Session過期
 SESSION_SAVE_EVERY_REQUEST = False    # 是否每次請求都保存Session,默認(rèn)修改之后才保存

注意:

1)也可以自定義配置 但是自定義的配置都要寫到配置文件最后 代碼中使用時(shí)可以導(dǎo)入配置

from django.conf import settings
settings.配置名

2)上面所有配置都是針對特定問題需要修改的 系統(tǒng)默認(rèn)配置不做說明

3)上面配置只是前面django系列隨筆所遇到的常用配置 后續(xù)所遇配置都會逐步在此隨筆中持續(xù)添加跟新

下面看段django settings最佳配置實(shí)例代碼,具體代碼如下所示:

# encoding=utf-8
import os
import socket
SITE_ID = 1
# 項(xiàng)目的根目錄
# 簡化后面的操作
PROJECT_ROOT = os.path.dirname(os.path.dirname(__file__))
# 加載應(yīng)用
# 把應(yīng)用添加到INSTALLED_APPS中
from apps.kuser.mysetting import myapp as kuser_app
from apps.blog.mysetting import myapp as blog_app
MY_APPS = blog_app + kuser_app
# 加載靜態(tài)文件
from apps.blog.mysetting import my_staticfiles as blog_staticfiles
from apps.kuser.mysetting import my_staticfiles as kuser_staticfiles
MY_STATIC_DIRS = blog_staticfiles + kuser_staticfiles
# 加載模板文件
from apps.blog.mysetting import my_templates as blog_templates
from apps.kuser.mysetting import my_templates as kuser_templates
MY_TEMPLATE_DIRS = blog_templates + kuser_templates
# 密鑰配置
# 適用于開發(fā)環(huán)境和部署環(huán)境
# 可以從系統(tǒng)環(huán)境中,配置文件中,和硬編碼的配置中得到密鑰
try:
 SECRET_KEY = os.environ['SECRET_KEY']
except:
 try:
 with open(os.path.join(PROJECT_ROOT, 'db/secret_key').replace('\\', '/')) as f:
  SECRET_KEY = f.read().strip()
 except:
 SECRET_KEY = '*lk^6@0l0(iulgar$j)faff&^(^u+qk3j73d18@&+ur^xuTxY'
# 得到主機(jī)名
def hostname():
 sys = os.name
 if sys == 'nt':
 hostname = os.getenv('computername')
 return hostname
 elif sys == 'posix':
 host = os.popen('echo $HOSTNAME')
 try:
  hostname = host.read()
  return hostname
 finally:
  host.close()
 else:
 raise RuntimeError('Unkwon hostname')
#調(diào)試和模板調(diào)試配置
#主機(jī)名相同則為開發(fā)環(huán)境,不同則為部署環(huán)境
#ALLOWED_HOSTS只在調(diào)試環(huán)境中才能為空
if socket.gethostname().lower() == hostname().lower():
 DEBUG = TEMPLATE_DEBUG = True
 ALLOWED_HOSTS = []
else:
 ALLOWED_HOSTS = [
 'baidu.com',
 '0.0.0.0',
 ]
 DEBUG = TEMPLATE_DEBUG = False
#數(shù)據(jù)庫配置
MYDB = {
 'mysql': {
 'ENGINE': 'django.db.backends.mysql',
 'NAME': 'books', #你的數(shù)據(jù)庫名稱
 'USER': 'root', #你的數(shù)據(jù)庫用戶名
 'PASSWORD': '', #你的數(shù)據(jù)庫密碼
 'HOST': '', #你的數(shù)據(jù)庫主機(jī),留空默認(rèn)為localhost
 'PORT': '3306', #你的數(shù)據(jù)庫端口
 },
 'sqlite': {
 'ENGINE': 'django.db.backends.sqlite3',
 'NAME': os.path.join(PROJECT_ROOT, 'db/db.sqlite3').replace('\\', '/'),
 }
}
# 給靜態(tài)文件url一個后綴,在templates里用到的。
# 映射到靜態(tài)文件的url
# STATIC_URL的含義與MEDIA_URL類似
STATIC_URL = '/static/'
# 總的static目錄
# 可以使用命令 manage.py collectstatic 自動收集static文件
# STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static').replace('\\', '/')
#放各個app的static目錄及公共的static目錄
#STATICFILES_DIRS:和TEMPLATE_DIRS的含義差不多,就是除了各個app的static目錄以外還需要管理的靜態(tài)文件設(shè)置,
#比如項(xiàng)目的公共文件差不多。然后給靜態(tài)文件變量賦值,告訴Django,靜態(tài)文件在哪里
#另外,Django提供了一個findstatic命令來查找指定的靜態(tài)文件所在的目錄,例如:D:\TestDjango>python manage.py findstatic Chrome.jpg
# 默認(rèn)情況下(如果沒有修改STATICFILES_FINDERS的話),Django首先會在STATICFILES_DIRS配置的文件夾中尋找靜態(tài)文件,然后再從每個app的static子目錄下查找,
# 并且返回找到的第一個文件。所以我們可以將全局的靜態(tài)文件放在STATICFILES_DIRS配置的目錄中,將app獨(dú)有的靜態(tài)文件放在app的static子目錄中。
# 存放的時(shí)候按類別存放在static目錄的子目錄下,如圖片都放在images文件夾中,所有的CSS都放在css文件夾中,所有的js文件都放在js文件夾中。
STATICFILES_DIRS = (
 ("downloads", os.path.join(PROJECT_ROOT, 'static/downloads').replace('\\', '/')),
 ("uploads", os.path.join(PROJECT_ROOT, 'static/uploads').replace('\\', '/')),
)
# 將app中的靜態(tài)文件添加到靜態(tài)文件配置列表中
STATICFILES_DIRS += MY_STATIC_DIRS
# 最后關(guān)鍵的部分是STATICFILES_DIRS以下配置
# 簡要說一下,static文件夾在項(xiàng)目里,有css js images 三個文件夾(看項(xiàng)目結(jié)構(gòu)),他們的路徑分別是:
# os.path.join(STATIC_ROOT,'css'),os.path.join(STATIC_ROOT,'js'),os.path.join(STATIC_ROOT,'images');
# 我們分別給他們起三個別名css,js,images(你可以隨意給,不過為了易記,我們原名稱指定別名了)
TEMPLATE_DIRS = (
 os.path.join(PROJECT_ROOT, 'templates').replace('\\', '/'),
)
# 配置應(yīng)用的模板文件路徑
TEMPLATE_DIRS += MY_TEMPLATE_DIRS
# 配置緩存
 CACHES = {
 'default': {
  'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
  'LOCATION': 'unix:/tmp/memcached.sock',
  'KEY_PREFIX': 'lcfcn',
  'TIMEOUT': None
 }
 }
LOGIN_REDIRECT_URL = '/'
LOGIN_URL = '/auth/login/'
LOGOUT_URL = '/auth/logout/'
# 指用戶上傳的文件,比如在Model里面的FileFIeld,ImageField上傳的文件。如果你定義
# MEDIA_ROOT=c:\temp\media,那么File=models.FileField(upload_to="abc/"),上傳的文件就會被保存到c:\temp\media\abc。MEDIA_ROOT必須是本地路徑的絕對路徑。
MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'static/uploads')
# MEDIA_URL是指從瀏覽器訪問時(shí)的地址前綴。
MEDIA_URL = '/uploads/'
# 應(yīng)用注冊列表
INSTALLED_APPS = (
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.sites',
 'django.contrib.sitemaps',
)
#為了不和系統(tǒng)應(yīng)用混合,自己開發(fā)的應(yīng)用放在這里
# 將自己寫的app添加到應(yīng)用列表中去
INSTALLED_APPS += MY_APPS
# django 中間件
# django處理一個Request的過程是首先通過django 中間件,然后再通過默認(rèn)的URL方式進(jìn)行的。
# 所以說我們要做的就是在django 中間件這個地方把所有Request攔截住,
# 用我們自己的方式完成處理以后直接返回Response,那么我們可以簡化原來的設(shè)計(jì)思路,
# 把中間件不能處理的 Request統(tǒng)統(tǒng)不管,丟給Django去處理。
MIDDLEWARE_CLASSES = (
 'django.middleware.cache.UpdateCacheMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 # 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django.middleware.cache.FetchFromCacheMiddleware',
)
ROOT_URLCONF = 'lcforum.urls'
WSGI_APPLICATION = 'lcforum.wsgi.application'
#數(shù)據(jù)庫配置
DATABASES = {
 'default': MYDB.get('sqlite'),
}
# 語言
LANGUAGE_CODE = 'zh-cn'
# 時(shí)區(qū)
TIME_ZONE = 'Asia/Shanghai'
USE_TZ = True
# 在template中使用靜態(tài)文件
# 采用這種方式需要有一些額外配置,打開settings.py,確認(rèn)TEMPLATE_CONTEXT_PROCESSORS中包含有'django.core.context_processors.static'
# TEMPLATE_CONTEXT_PROCESSORS = (
# 'django.core.context_processors.debug',
# 'django.core.context_processors.i18n',
# 'django.core.context_processors.media',
# 'django.core.context_processors.static',
# 'django.contrib.auth.context_processors.auth',
# 'django.contrib.messages.context_processors.messages',
#
# 'django.core.context_processors.tz',
# 'django.contrib.messages.context_processors.messages',
# # 'blog.context_processors.custom_proc',自定義函數(shù)
# )
#from django.conf import settings
#gettext = lambda s: s
#getattr()
# 假設(shè)有個工程djangodemo,有兩個app為demo1跟demo2
# django處理static的方法是把各個app各自的static合并到一處
# 比如:
# djangodemo/djangodemo/static 放置公共靜態(tài)文件
# djangodemo/demo1/static 放置該app自己的靜態(tài)文件
# djangodemo/demo2/static 放置該app自己的靜態(tài)文件
# 可以這么設(shè)置:
# STATIC_ROOT = '/www/djangodemo/djangodemo/static '
# STATIC_URL = '/static/'
# STATICFILES_DIRS = (
# 'djangodemo/static',
# 'demo1/static/',
# 'demo2/static/',
# )
# 使用命令
# manage.py collectstatic
# 就會自動把所有靜態(tài)文件全部復(fù)制到STATIC_ROOT中
# 如果開啟了admin,這一步是很必要的,不然部署到生產(chǎn)環(huán)境的時(shí)候會找不到樣式文件
# 不要把你項(xiàng)目的靜態(tài)文件放到這個目錄。這個目錄只有在運(yùn)行manage.py collectstatic時(shí)才會用到

總結(jié)

以上所述是小編給大家介紹的django中的setting最佳配置小結(jié),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Python SMTP配置參數(shù)并發(fā)送郵件

    Python SMTP配置參數(shù)并發(fā)送郵件

    這篇文章主要介紹了Python SMTP配置參數(shù)并發(fā)送郵件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • python獲取指定時(shí)間差的時(shí)間實(shí)例詳解

    python獲取指定時(shí)間差的時(shí)間實(shí)例詳解

    這篇文章主要介紹了python獲取指定時(shí)間差的時(shí)間實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • 基于python爬取梨視頻實(shí)現(xiàn)過程解析

    基于python爬取梨視頻實(shí)現(xiàn)過程解析

    這篇文章主要介紹了基于python爬取梨視頻實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Python:合并兩個numpy矩陣的實(shí)現(xiàn)

    Python:合并兩個numpy矩陣的實(shí)現(xiàn)

    今天小編就為大家分享一篇Python:合并兩個numpy矩陣的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python3搭建http服務(wù)器的實(shí)現(xiàn)代碼

    Python3搭建http服務(wù)器的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Python3搭建http服務(wù)器的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Python中的Joblib庫使用學(xué)習(xí)總結(jié)

    Python中的Joblib庫使用學(xué)習(xí)總結(jié)

    這篇文章主要介紹了Python中的Joblib庫使用學(xué)習(xí)總結(jié),Joblib是一組在Python中提供輕量級流水線的工具,Joblib已被優(yōu)化得很快速,很健壯了,特別是在大數(shù)據(jù)上,并對numpy數(shù)組進(jìn)行了特定的優(yōu)化,需要的朋友可以參考下
    2023-08-08
  • 對Pandas DataFrame缺失值的查找與填充示例講解

    對Pandas DataFrame缺失值的查找與填充示例講解

    今天小編就為大家分享一篇對Pandas DataFrame缺失值的查找與填充示例講解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • 關(guān)于dataframe.query()篩選tips

    關(guān)于dataframe.query()篩選tips

    在Pandas中,通過布爾索引或.query()方法可以實(shí)現(xiàn)對DataFrame中數(shù)據(jù)的篩選。例如,篩選特定列符合條件的行數(shù)據(jù)或排除某些類型值。此外,.query()方法還支持使用外部變量進(jìn)行篩選。這些操作對數(shù)據(jù)處理非常有用,可以高效地進(jìn)行數(shù)據(jù)清洗和預(yù)處理
    2024-09-09
  • Python實(shí)現(xiàn)類別變量的獨(dú)熱編碼

    Python實(shí)現(xiàn)類別變量的獨(dú)熱編碼

    這篇文章主要為大家詳細(xì)介紹了基于Python下OneHotEncoder與pd.get_dummies兩種方法,實(shí)現(xiàn)機(jī)器學(xué)習(xí)中最優(yōu)的編碼方法——獨(dú)熱編碼的方法,需要的可以參考一下
    2023-02-02
  • flask中主動拋出異常及統(tǒng)一異常處理代碼示例

    flask中主動拋出異常及統(tǒng)一異常處理代碼示例

    這篇文章主要介紹了flask中主動拋出異常及統(tǒng)一異常處理代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01

最新評論

进贤县| 东方市| 瓮安县| 巨野县| 杭州市| 廉江市| 淳安县| 特克斯县| 祁东县| 长沙市| 汉中市| 福安市| 教育| 灵武市| 金沙县| 金秀| 福安市| 涪陵区| 视频| 永宁县| 营口市| 怀集县| 丽江市| 鄂伦春自治旗| 道真| 台安县| 社旗县| 禹州市| 澄城县| 墨玉县| 崇礼县| 双辽市| 齐齐哈尔市| 廊坊市| 塔城市| 新建县| 肥乡县| 长海县| 湟中县| 西吉县| 尖扎县|