Django的settings.py配置檔案相關配置
阿新 • • 發佈:2020-12-17
1、HTML模板目錄templates
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')] # 指定html檔案所在的位置目錄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', ], }, }, ]
2、靜態檔案配置
settings.py末尾新增
# 靜態資料夾的別名 STATIC_URL = '/static/' # 所有靜態檔案(css/js/圖片)都放在我下面你配置的資料夾中 STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"), ]
3、資料庫配置
預設使用sqlite3
使用MySQL的配置方法:
# 資料庫相關的配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 連線的資料庫型別 'NAME': "db", # 資料庫名稱 'HOST': '127.0.0.1', # 連線資料庫的地址 'PORT': 3306, # 埠 'USER': 'root', # 使用者 'PASSWORD': '123456' # 密碼 } }
由於Django內部連線MySQL時使用的是MySQLdb模組,而python3中還無此模組,所以需要使用pymysql來代替
配置與settings.py同級下的 __init__.py檔案(如沒有__init__.py檔案需新建立一個)。設定如下:
import pymysql pymysql.install_as_MySQLdb() # 告訴Django用pymysql來替換預設的MySQLdb
4、APP配置
新建立的APP需要配置,Django才能找到
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app01.apps.App01Config', # 配置新增的APP,注:'app01'也可以這樣寫 ]
5、配置使用者上傳檔案的預設路徑
使用者上傳的資料會根據該目錄,結合UserInfo表中upload_to
=
'avatarDir/'
引數來拼接當前目錄
1.使用者表models.py 詳情
from django.db import models # Create your models here. from django.contrib.auth.models import AbstractUser class UserInfo(AbstractUser): """ 使用者資訊 """ nid = models.AutoField(primary_key=True) nickname = models.CharField(verbose_name='暱稱', max_length=32) telephone = models.CharField(max_length=11, blank=True, null=True, unique=True, verbose_name='手機號碼') avatar = models.FileField(verbose_name='頭像', upload_to='avatarDir/', default="avatar/default.png") # 設定使用者上傳頭像 create_time = models.DateTimeField(verbose_name='建立時間', auto_now_add=True) blog = models.OneToOneField(to='Blog', to_field='nid', null=True) def __str__(self): return self.usernamemodels.py
2.settings.py 配置 MEDIA_ROOT 路徑
# Django使用者上傳的都叫media檔案 MEDIA_URL = "/media/" # media配置,使用者上傳的檔案都預設放在這個資料夾下 MEDIA_ROOT = os.path.join(BASE_DIR, "media")
3.如需要使用者通過Url可以直接訪問上傳的檔案,需要配置 urls.py指定 MEDIA_ROOT 路徑
from django.conf.urls import url from django.contrib import admin from blog import views # 需要匯入serve和settings配置 from django.views.static import serve from django.conf import settings urlpatterns = [ url(r'^admin/', admin.site.urls), # media 配置 圖片儲存路徑可直接訪問 url(r'^media/(?P<path>.*)$', serve, {"document_root":settings.MEDIA_ROOT}), ]
6、Session配置
1. 資料庫Session SESSION_ENGINE = 'django.contrib.sessions.backends.db' # 引擎(預設) 2. 快取Session SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # 引擎 SESSION_CACHE_ALIAS = 'default' # 使用的快取別名(預設記憶體快取,也可以是memcache),此處別名依賴快取的設定 3. 檔案Session SESSION_ENGINE = 'django.contrib.sessions.backends.file' # 引擎 SESSION_FILE_PATH = None # 快取檔案路徑,如果為None,則使用tempfile模組獲取一個臨時地址tempfile.gettempdir() 4. 快取+資料庫 SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db' # 引擎 5. 加密Cookie Session SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies' # 引擎 其他公用設定項: SESSION_COOKIE_NAME = "sessionid" # Session的cookie儲存在瀏覽器上時的key,即:sessionid=隨機字串(預設) 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 # 是否關閉瀏覽器使得Session過期(預設) SESSION_SAVE_EVERY_REQUEST = False # 是否每次請求都儲存Session,預設修改之後才儲存(預設)
7、Admin中文介面顯示
LANGUAGE_CODE = 'zh-hans' #修改成中文 TIME_ZONE = 'Asia/Shanghai' #設定時區 USE_I18N = True USE_L10N = True USE_TZ = False #如果是True就是取國際時間,False 是取本地時間
8、時間格式化
USE_L10N = False DATETIME_FORMAT = 'Y-m-d H:i:s' DATE_FORMAT = 'Y-m-d'
9、終端列印SQL語句
在Django專案的settings.py檔案中,在最後複製貼上如下程式碼:
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console':{ 'level':'DEBUG', 'class':'logging.StreamHandler', }, }, 'loggers': { 'django.db.backends': { 'handlers': ['console'], 'propagate': True, 'level':'DEBUG', }, } }