1. 程式人生 > 實用技巧 >Django的settings.py配置檔案相關配置

Django的settings.py配置檔案相關配置

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.username
models.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',
        },
    }
}