Django開發(fā)項(xiàng)目的一些設(shè)置
以項(xiàng)目為shop
為例
開發(fā)環(huán)境配置
我們通常需要具備多個(gè)環(huán)境的配置文件混弥,如開發(fā)環(huán)境和生產(chǎn)環(huán)境犹芹,并進(jìn)行切換
創(chuàng)建包shop/shop/settings
在其中可以創(chuàng)建dev.py
表示開發(fā)環(huán)境,prod.py
表示生產(chǎn)環(huán)境
在manage.py
中修改代碼即可
import os
import sys
if __name__ == "__main__":
# os.environ.setdefault("DJANGO_SETTINGS_MODULE", "shop.settings")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "shop.settings.dev")
配置mysql
-
在配置文件中配置
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'shop', 'USER': 'root', 'PASSWORD': '491521', 'HOST': '127.0.0.1', 'PORT': '3306' } }
-
在
__init__.py
中配置pymysql
的驅(qū)動(dòng)# 配置pymysql作為數(shù)據(jù)庫驅(qū)動(dòng) import pymysql pymysql.install_as_MySQLdb()
配置Jinja2
模板引擎
-
創(chuàng)建
shop/shop/utils
包,在其中創(chuàng)建my_jinja2
文件,在其中編寫代碼from __future__ import absolute_import # Python 2 only from django.contrib.staticfiles.storage import staticfiles_storage from django.urls import reverse from jinja2 import Environment def environment(**options): env = Environment(**options) env.globals.update({ 'static': staticfiles_storage.url, 'url': reverse, }) return env
-
在配置文件中進(jìn)行配置
TEMPLATES = [ { 'BACKEND': 'django.template.backends.jinja2.Jinja2', # 加載jinja2引擎 'DIRS': [os.path.join(BASE_DIR,'templates')], #模板存儲(chǔ)位置 'APP_DIRS': True, 'OPTIONS': { 'environment':'shop.utils.my_jinja2.environment', #設(shè)置全局的環(huán)境變量方法 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
配置redis數(shù)據(jù)庫
安裝第三方
pip install django-redis==4.8.0
-
在
settings
配置文件中配置# redis配置 CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/1", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", "PASSWORD": "491521", } }, "session": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/0", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", "PASSWORD": "491521", } } } # session狀態(tài)保持信息存儲(chǔ)位置 SESSION_ENGINE = "django.contrib.sessions.backends.cache" SESSION_CACHE_ALIAS = "session"
日志工程的配置
- 目的: 可以配置日志信息, 記錄用戶的訪問行為, 或者程序運(yùn)行的行為
創(chuàng)建文件夾
logs
-
在配置文件中進(jìn)行配置
# 日志 LOGGING = { 'version': 1, 'disable_existing_loggers': False, # 是否禁用已經(jīng)存在的日志器 'formatters': { # 日志信息顯示的格式 'verbose': { 'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s' }, 'simple': { 'format': '%(levelname)s %(module)s %(lineno)d %(message)s' }, }, 'filters': { # 對日志進(jìn)行過濾 '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(BASE_DIR, 'logs/meiduo.log'), # 日志文件的位置 'maxBytes': 300 * 1024 * 1024, 'backupCount': 10, 'formatter': 'verbose' }, }, 'loggers': { # 日志器 'django': { # 定義了一個(gè)名為django的日志器 'handlers': ['console', 'file'], # 可以同時(shí)向終端與文件中輸出日志 'propagate': True, # 是否繼續(xù)傳遞日志信息 'level': 'INFO', # 日志器接收的最低日志級(jí)別 }, } }
靜態(tài)文件集成
- 目的: 可以將項(xiàng)目中用到的靜態(tài)文件集成到工程中
創(chuàng)建文件夾
static
-
在配置文件中配置
# 配置靜態(tài)文件資源存儲(chǔ)位置的(絕對路徑) STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static') ]