摘要:默認的,及使用它的號數據庫此處使用號數據庫,在客戶端查看記得切換數據庫存儲在本機內存中,比數據庫的方式讀寫快很多默認的配置項,采用號庫。狀態保持的配置項,采用號庫。使用名為的配置項存儲數據。配置完成后運行程序,測試結果。
1.配置開發環境當進入虛擬環境,通過django_admin創建一個項目后,會在項目同名目錄生成一個setting.py文件。而實際項目過程中會有不同的環境,如開發環境、生產環境;所有不同的環境各自使用不同的配置顯得很重要。
開發環境:用于編寫和調試項目代碼。
生產環境:用于項目線上部署運行。
準備配置文件目錄
在項目同名目錄里名新建包,命名為settings,作為配置文件目錄
準備開發和生產環境配置文件
在配置包settings中,新建開發環境配置文件
準備開發環境配置內容
將默認的配置文件settings.py中內容拷貝至setting包中,并命名為dev.py
在項目文件manage.py中做如下修改:
# os.environ.setdefault("DJANGO_SETTINGS_MODULE", "meiduo_mall.settings") #默認找setting.py,此處注釋掉
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "meiduo_mall.settings.dev")
2.配置Jinja2模板引擎pip install Jinja2
Jinja2模板渲染速度比django默認模板渲染速度要快很多。
在前面配置好的開發環境dev.py中加入如下代碼,后續配置不說明也默認指在該文件中做修改。
TEMPLATES = [
{
"BACKEND": "django.template.backends.jinja2.Jinja2", # jinja2模板引擎
"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",
],
# Jinja2模板引擎環境
"environment": "項目名.utils.jinja2_env.jinja2_environment", # 項目名修改為你項目的名字
},
},
]
在項目同名應用中新建一個utils包,在包里新建一個jinja2_environment.py文件,文件里內容如下:
from jinja2 import Environment
from django.contrib.staticfiles.storage import staticfiles_storage
from django.urls import reverse
def jinja2_environment(**options):
env = Environment(**options)
env.globals.update({
"static": staticfiles_storage.url, # 確保模板引擎中可以使用{{ url("") }} {{ static("") }}這類語句
"url": reverse,
})
return env
此時你會發現django中的默認站點admin已經不能訪問了,我們要繼續使用django強大的后臺站點功能做如下修改:
TEMPLATES = [
{
# django 默認 template 模板配置
"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": "django.template.backends.jinja2.Jinja2", # jinja2模板引擎
"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",
],
# Jinja2模板引擎環境
"environment": "項目名.utils.jinja2_env.jinja2_environment",
},
},
]
3 配置MySQL數據庫先確保你本地MySQL有所需要的數據庫名,然后進行連接,下面語句進入MySQL客戶端后可新建一個數據庫。
create database 數據庫名 charset=utf8;
默認連接MySQL都是root用戶權限級別太高,擁有操作所有數據庫的權限,下面介紹MySQL新建用戶并賦予操作多帶帶一個數據庫的權限。
create user tom identified by "123456"; --新建tom用戶,密碼123456
grant all on mall.* to "tom"@"%"; --授權tom用戶操作mall數據庫使用權限
flush privileges; --刷新權限
django默認使用sqlite3數據庫,這是一個輕量級關系型數據庫,我們下面替換掉它,在dev.py中做如下配置:
DATABASES = {
"default": {
"ENGINE": "django.db.backends.mysql", # 數據庫引擎
"HOST": "127.0.0.1", # 數據庫主機,填項目中數據庫真實ip
"PORT": 3306, # 數據庫端口
"USER": "tom", # 數據庫用戶名
"PASSWORD": "123456", # 數據庫用戶密碼
"NAME": "mall" # 數據庫名字
},
}
pip install pymysql
在工程同名子目錄的__init__.py文件中,添加如下代碼:
from pymysql import install_as_MySQL
db??install_as_MySQLdb()
配置完成后:運行程序,測試結果。
4.配置redis首先確保安裝了redis數據庫,然后在虛擬環境中安裝redis,同樣是通過pip安裝。安裝完以后還有安裝redis的django擴展包django-redis。
pip install redis pip install django-redis
在dev.py中配置redis,此處用它來做session緩存。
CACHES = {
"default": { # 默認
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/0", # redis的ip,及使用它的0號數據庫
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
},
"session": { # session
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1", # 此處使用1號數據庫,在客戶端查看記得select 1,切換數據庫
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
},
}
SESSION_ENGINE = "django.contrib.sessions.backends.cache" # 存儲在本機內存中,比數據庫的方式讀寫快很多
SESSION_CACHE_ALIAS = "session"
default:
默認的Redis配置項,采用0號Redis庫。
session:
狀態保持的Redis配置項,采用1號Redis庫。
SESSION_ENGINE
修改session存儲機制使用Redis保存。
SESSION_CACHE_ALIAS:
使用名為"session"的Redis配置項存儲session數據。
配置完成后:運行程序,測試結果。
關于對session緩存策略的說明:
存儲在本機內存中,如果丟失則不能找回,比數據庫的方式讀寫更快。
SESSION_ENGINE="django.contrib.sessions.backends.cache"
優先從本機內存中存取,如果沒有則從數據庫中存取。
SESSION_ENGINE="django.contrib.sessions.backends.cached_db"
存儲在數據庫中,如下設置可以寫,也可以不寫。
SESSION_ENGINE="django.contrib.sessions.backends.db"
5.配置項目日志下面介紹使用logging記錄項目的日志。在dev.py中做如下設置:
LOGGING = {
"version": 1,
"disable_existing_loggers": False, # 是否禁用已經存在的日志器
"formatters": { # 日志信息顯示的格式
"verbose": {
"format": "%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s"
},
"simple": {
"format": "%(levelname)s %(module)s %(lineno)d %(message)s"
},
},
"filters": { # 對日志進行過濾
"require_debug_true": { # django在debug模式下才輸出日志
"()": "django.utils.log.RequireDebugTrue",
},
},
"handlers": { # 日志處理方法
"console": { # 向終端中輸出日志
"level": "INFO",
"filters": ["require_debug_true"],
"class": "logging.StreamHandler",
"formatter": "simple"
},
"file": { # 向文件中輸出日志
"level": "INFO",
"class": "logging.handlers.RotatingFileHandler",
"filename": os.path.join(os.path.dirname(BASE_DIR), "logs/mall.log"), # 日志文件的位置
"maxBytes": 300 * 1024 * 1024,
"backupCount": 10,
"formatter": "verbose"
},
},
"loggers": { # 日志器
"django": { # 定義了一個名為django的日志器
"handlers": ["console", "file"], # 可以同時向終端與文件中輸出日志
"propagate": True, # 是否繼續傳遞日志信息
"level": "INFO", # 日志器接收的最低日志級別
},
}
}
然后在項目目錄中建立一個logs的目錄,然后在目錄中建立一個mall.log文件。名字可以任意起,記得很上面file中filename對應起來即可。
當然實際開發中大都是使用git來管理項目的,每個人調試產出的log不太一樣,開發中可以先將其加入忽略文件中。在項目文件.gitignioe中新增如下信息:
*.log
然后在logs目錄中建立一個.gitkeep文件,保證logs目錄能被git管理。
6.配置前端靜態文件前面提了一下項目中的html模板文件是配置在templates中,需要在項目同名子應用中建立一個templates目錄,項目中需要使用靜態文件,比如 css、images、js 等等,需要專門使用配置一個目錄。在里面建立不同的目錄來存放不同的文件。
STATIC_URL = "/static/" # 靜態文件的路由?# 配置靜態文件加載路徑
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")] # 在項目同名子引用中建立一個static目錄
STATICFILES_DIRS是一個列表,這樣我們就可以配置多個目錄來存放靜態文件。如:
# 配置靜態文件加載路徑
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static"),os.path.join(BASE_DIR, "static2")]
7.應用注冊在項目同名目錄中,也就是setting包同級目錄中新建一個apps的包,然后進入到apps的目錄中,在終端執行如下命令,創建一個users應用。
python ../../manage.py startapp users
然后在dev.py中注冊應用:
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
# 注冊
"mall.apps.users.apps.UsersConfig", # 用戶模塊應用
]
下面介紹一下python中sys模塊,在dev.py的BASE_DIR下新增:
import sys
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, os.path.join(BASE_DIR, "apps")) # 追加項目路徑
這樣注冊應用就能簡化成如下方式了:
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
# 注冊
# "mall.apps.users.apps.UsersConfig", # 用戶模塊應用
"users", # 用戶模塊應用
]
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/7031.html
摘要:默認的,及使用它的號數據庫此處使用號數據庫,在客戶端查看記得切換數據庫存儲在本機內存中,比數據庫的方式讀寫快很多默認的配置項,采用號庫。狀態保持的配置項,采用號庫。使用名為的配置項存儲數據。配置完成后運行程序,測試結果。 1.配置開發環境當進入虛擬環境,通過django_admin創建一個項目后,會在項目同名目錄生成一個setting.py文件。而實際項目過程中會有不同的環境,如開發環境、生...
摘要:靜態資源路徑可以有多個,所以這里使用一個列表進行配置再次進入,完美后記現在只涉及到了項目的配置和一些基礎的配置,沒有涉及到請求從開始到完成的任何內容。下篇教程將集中進行記錄。 前言 推薦使用 virtualenv 創建 python 虛擬環境,防止因為使用 pip 安裝依賴到全局引起版本沖突的問題,PyCharm 默認會生成一個 venv 目錄并創建虛擬環境,使用 IDE 自帶的終端...
摘要:一項目目錄結構介紹與項目進行交互的命令行工具集的入口項目管理器目錄項目容器,包含項目的基本配置,目錄名稱不建議修改中聲明模塊的文件,內容默認為空項目的總配置文件,包含數據庫應用時間等各種配置配置文件,項目中所有地址頁面都需要我們自己去配置其 一、項目目錄結構介紹 showImg(https://segmentfault.com/img/remote/1460000016373937?w...
閱讀 2282·2021-10-09 09:41
閱讀 1745·2019-08-30 15:53
閱讀 988·2019-08-30 15:52
閱讀 3443·2019-08-30 11:26
閱讀 767·2019-08-29 16:09
閱讀 3421·2019-08-29 13:25
閱讀 2259·2019-08-26 16:45
閱讀 1931·2019-08-26 11:51