Django Web应用开发实战第二章
生活随笔
收集整理的這篇文章主要介紹了
Django Web应用开发实战第二章
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、基本配置信息
"""
Django settings for myblog project. Generated by 'django-admin startproject' using Django 2.2. For more information on this file, see
https://docs.djangoproject.com/en/2.2/topics/settings/ For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.2/ref/settings/
""" import os
# 項目路徑
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/
# 密鑰配置
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'y#-jmza4^h1bq!wj&_8y0t8x1j+t@uzm)1-t816ln)g-7b@roh' # SECURITY WARNING: don't run with debug turned on in production!
# 調試模式
DEBUG = True
# 域名訪問權限
ALLOWED_HOSTS = ['*'] # Application definition
# App列表
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'account', # 用戶信息
'album', # 圖片墻信息
'article', # 文章信息
'interflow', # 留言板信息
]
- 項目路徑BASE_DIR:主要通過os模塊讀取當前項目在計算機系統的具體路徑,該代碼在創建項目的時候自動生成,一般不需要更改。
- 密鑰配置SECRET_KET:這是一個隨機值,在項目創建的時候自動生成,一般情況不需要更改。主要用于重要數據的加密處理,提高項目的安全性,避免遭到攻擊者的惡意破壞。密鑰主要用于用戶密碼、CSRF機制和會話Session等數據加密。
- 用戶密碼:Django內置一套Auth認證系統,該系統具有用戶認證和存儲用戶信息等功能。在創建用戶的時候,將用戶密鑰進行加密處理,保證用戶安全性。
- CSRF機制:該機制主要用于表單提交,防止竊取網站的用戶信息來制造惡意請求。
- 會話Session:Session的信息存放在Cookie中,以一串隨機字符串表示,用于標識當前訪問網站的用戶的身份,記錄相關用戶信息。
- 調試模式DEBUG:該值為布爾值。如果在開發調試階段,那么應該設置為True,在開發調試過程中會自動檢測代碼是否更改,根據檢測結果執行是否刷新重啟系統。如果項目部署上線,那么應該將其改為False,否則會泄露項目的相關信息。
- 域名訪問權限ALLOW_HOSTS:設置可訪問的域名,默認值為空列表。當DEBUG=True并且ALLOW_HOSTS=[]時,項目只允許已localhost或127.0.0.1在瀏覽器上訪問。當DEBUG=False時,ALLOW_HOSTS是必填項,否則程序無法啟動,如果想允許所有域名訪問可設置ALLOW_HOSTS=['*']。
- App列表INSTALLED_APPS:告訴Django有哪些App。在項目創建時,已有admin、auth和session等配置信息,這些都是Django內置的應用功能。如下:
- admin:內置的后臺管理系統。
- auth:內置的用戶認證系統。
- contenttypes:記錄項目中所有的model元數據(Django的ORM框架)。
- sessions:Session會話功能,用于標識當前訪問網站的用戶身份,記錄相關用戶信息。
- messages:消息提示功能。
- staticfiles:查找靜態資源路徑。
二、資源文件配置
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/ # 資源路由
STATIC_URL = '/static/'
# 資源集合
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'publicStatic')]
# 資源部署
# STATIC_ROOT = os.path.join(BASE_DIR, 'publicStatic') # 設置媒體資源保存路徑
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
Django資源文件配置分為靜態資源和媒體資源。
- Debug模式下只能識別項目應用APP的static文件夾里的靜態資源,如果文件夾改為其他名字,Django就無法識別;若將static文件夾放在別的路徑下,Django也是無法識別的。
- 若資源路由STATIC_URL的值為/static/,則瀏覽器訪問靜態的網站必須為static。
- 由于STATIC_URL的特殊性,若靜態文件夾存放在項目的根目錄或定義多個靜態文件夾,可使用資源集合STATICFILES_DIRS列表。
- STATIC_ROOT作用是在服務器上部署項目,實現服務器和項目之間的映射。收集(python manage.py collectstatic)整個項目的靜態資源并放在一個新的文件夾,然后由該文件夾與服務器之間構建映射關系。Debug=True時,Django提供靜態文件代理服務,無需設置。
- 媒體資源和靜態資源可以共存,兩者可獨立運行,互不影響。
- 配置媒體資源后,還需要將media文件夾注冊到Django里
from django.contrib import admin
from django.urls import path, re_path # 導入項目應用
from .views import index
# 配置媒體文件夾media
from django.views.static import serve
from django.conf import settings urlpatterns = [
path('admin/', admin.site.urls),
path('', index),
# 配置媒體文件的路由地址
re_path('meida/(?P<path>.*)', serve, ('document_root': settings.MEDIA_ROOT), name='media'),
]
三、模板文件配置
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, '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',
],
},
},
]
- BACKEND:定義模板引擎,用于識別模板里的變量和指令。內置模板引擎有DjangoTemplates和jinja2.jinja2,每個模板引擎都有自己的變量和指令語法。
- DIRS:設置模板所在路徑。默認空列表。根目錄的templates存放共用的模板文件。
- APP_DIRS:是否在app里查找模板文件,默認True。
- OPTIONS:用于填充在RequestContext的上下文(模板里的變量和指令),一般情況下不做任何修改。
四、數據庫配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# 'ENGINE': 'django.db.backends.mysql',
#'NAME': DB_NAME,
#'USER': DB_USER,
#'PASSWORD': DB_PASSWORD,
#'HOST': DB_HOST,
#'PORT': DB_PORT,
}
}
- 不同數據庫需設置不同數據庫引擎,Django提供4種數據庫引擎
- 'django.db.backends.mysql'
- 'django.db.backends.postgresql'
- 'django.db.backends.sqlite3'
- 'django.db.backends.oracle'
-
import pymysql pymysql.install_as_MySQLdb()
- 數據庫配置列表可配置多個數據庫連接
使用mysql需要做下適配mysqldb不支持python3,Django2.0以上版本不再使用mysqldb作為MySQL的連接模塊,而選擇mysqlclient模塊,兩者使用上沒有太大差異。也可使用pymysql模塊連接MySQL,需在MyDjango的init文件里設置數據庫連接模塊
五、中間件
中間件(Middleware)是一個用來處理Django的請求(Reuqest)和響應(Response)的框架級別的鉤子,它是一個輕量級、低級別的插件系統,用于在全局范圍內改變Django的輸入和輸出。
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.sessions.middleware.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
#'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'corsheaders.middleware.CorsMiddleware',
]
- 每個中間件的設置順序是固定的,若隨意變更中間件很容易導致程序異常
- SecurityMiddleware:內置的安全機制,保護網站和用戶的通信安全
- SessionMiddleware:會話Session功能
- LocaleMiddleware:國際化和本地化功能
- CommonMiddleware:處理請求信息,規范化請求內容
- CsrfViewMiddleware:開啟CSRF防護功能
- AuthenticationMiddleware:開啟內置用戶認證系統
- MessageMiddleware:開啟內置消息提示功能
- XFrameOptionMiddleware:防止惡意程序單擊劫持
- CorsMiddlware(django-cors_headers第三方庫):設置跨域訪問
總結
以上是生活随笔為你收集整理的Django Web应用开发实战第二章的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 增值税怎么计算 进项的税额=不含税销售收
- 下一篇: gcc、g++命令