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', ], }, }, ]
靜態文件配置
settings.py末尾添加
# 靜態文件夾的別名 STATIC_URL = '/static/' # 所有靜態文件(css/js/圖片)都放在我下面你配置的文件夾中 STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"), ]
數據庫配置
默認使用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
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'也可以這樣寫 ]
配置用戶上傳文件的默認路徑
用戶上傳的數據會根據該目錄,結合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
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}), ]
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,默認修改之后才保存(默認)
Admin中文界面顯示
LANGUAGE_CODE = 'zh-hans' #修改成中文 TIME_ZONE = 'Asia/Shanghai' #設置時區 USE_I18N = True USE_L10N = True USE_TZ = False #如果是True就是取國際時間,False 是取本地時間
時間格式化
USE_L10N = False DATETIME_FORMAT = 'Y-m-d H:i:s' DATE_FORMAT = 'Y-m-d'
終端打印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', }, } }