Django-settings
import datetime
import os # 操作系统ubuntu模块
import sys # python模块
项目根目录的配置
os.path.abspath():拿到当前文件的绝对路径 os.path.dirname():拿到其所属目录
#settings文件中
# __file__ ===> 当前文件名
BASE_DIR = os.path.dirname(os.path.dirname(os.path.absname(__file__)))
指定应用的导包路径
sys.path是一个Python搜索模块的路径的列表。当你导入一个模块时,Python会按照sys.path中的路径顺序来搜索模块。通过将路径插入到列表的开头(索引为0),你可以确保这个路径的优先级最高,即在搜索模块时首先检查这个路径。
sys.path.insert(0,os.path.join(BASE_DIR,'apps'))
# 0表示将路径插入到'sys.path'列表的最前面,即作为第一个元素插入
SECRET_KEY
SECRET_KEY是Django中的一个重要设置,用于加密签名和安全目的。它用于各种安全相关的操作,比如生成安全令牌、签名cookie和防止数据篡改。
在生产环境中尤其重要的是保持SECRET_KEY的机密性,因为一个暴露或被攻击的密钥可能导致各种安全漏洞和攻击。
DEBUG模式
在部署到服务器上后记得关闭
允许的域名和IP
ALLOWED_HOSTS = [
'www.qfzwy.cn',
'127.0.0.1',
'*'
]
注册App
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 完整导包路径
# 'meiduo_mall.apps.users.apps.UsersConfig',
'users.apps.UsersConfig',
'verifycations.apps.VerifycationsConfig',
'contents.apps.ContentsConfig',
'oauth.apps.OauthConfig',
'areas.apps.AreasConfig',
'goods.apps.GoodsConfig',
'carts.apps.CartsConfig',
'orders.apps.OrdersConfig',
'payments.apps.PaymentsConfig',
'meiduo_admin.apps.MeiduoAdminConfig',
'corsheaders', # 跨域模块
# 'haystack',
'django_crontab', # 定时任务
]
中间件
部署后注释csrf即可
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
路由根路径
ROOT_URLCONF变量被设置为'niubo_drf.urls',它是一个字符串,表示包含niubo_drf项目的URL配置的Python模块。
通常情况下,这个值指向一个Python模块,其中定义了urlpatterns变量。urlpatterns变量是一个列表,其中包含将特定URL映射到Django应用程序中的相应视图或函数的URL模式。
ROOT_URLCONF = 'niubo_drf.urls'
如果模式字符串中包含了反斜杠\,为了保持它们的原始意义,应该在模式字符串前面加上r前缀,表示该字符串是原始字符串。
以^开头,表示它们要匹配以特定路径开头的URL。例如,r'^admin/'将匹配以admin/开头的URL,r'^'将匹配任何URL路径。
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('users.urls')),
url('^', include('verifycations.urls')),
url('^', include('contents.urls')),
url('^', include('oauth.urls')),
url('^', include('areas.urls')),
url('^', include('goods.urls')),
# url(r'^search/', include('haystack.urls')),
url('^', include('carts.urls')),
url('^', include('orders.urls')),
url('^', include('payments.urls')),
url('^niubo_admin/', include('niubo_admin.urls')),
]
模板路径
前后端分离好像可以忽略
TEMPLATES = [
{
'BACKEND': 'django.template.backends.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': 'meiduo_mall.utils.jinja2_env.jinja2_environment',
},
},
]
wsgi路径
WSGI_APPLICATION = 'niubo_drf.wsgi.application'
数据库配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'HOST': '*.*.*.*', # 数据库主机
'PORT': 3306, # 数据库端口
'USER': '****', # 数据库用户名
'PASSWORD': '****', # 数据库用户密码
'NAME': 'niuboapp' # 数据库名字
},
}
密码验证器
AUTH_PASSWORD_VALIDATORS是一个配置设置,用于定义密码验证器的列表。密码验证器用于验证用户输入的密码是否符合安全要求。
-
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator':验证密码与用户属性的相似度,例如用户名、电子邮件等。 -
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator':验证密码的最小长度。 -
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator':验证密码是否为常见密码,例如常用字典中的单词或简单密码。 -
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator':验证密码是否包含数字字符。
通过配置AUTH_PASSWORD_VALIDATORS,你可以根据项目的需求和安全标准定义自定义的密码验证器,或者修改现有验证器的配置参数。这样可以提高用户密码的安全性,并减少密码被猜测或破解的风险。
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
国际化和时区配置
-
LANGUAGE_CODE:表示当前使用的语言代码。在你提供的代码中,LANGUAGE_CODE被设置为'en-us',表示使用英语(美国)作为默认语言。 -
TIME_ZONE:表示当前使用的时区。在你提供的代码中,TIME_ZONE被设置为'UTC',表示使用协调世界时(Coordinated Universal Time)作为默认时区。 -
USE_I18N:表示是否启用国际化(Internationalization)。如果设置为True,Django将支持多语言功能,包括翻译文本、日期格式等。 -
USE_L10N:表示是否启用本地化(Localization)。如果设置为True,Django将使用本地化格式,例如数字和日期的本地化格式。 -
USE_TZ:表示是否启用时区。如果设置为True,Django将支持时区功能,包括日期和时间的时区转换。
静态文件配置
-
STATIC_URL:表示静态文件的URL路径。在你的代码中,STATIC_URL被设置为'/static/',意味着静态文件可以通过http://yourdomain.com/static/这样的URL路径来访问。 -
STATICFILES_DIRS:表示静态文件的磁盘路径。在你的代码中,STATICFILES_DIRS是一个列表,其中包含一个路径,即os.path.join(BASE_DIR, 'static')。这表示静态文件存储在项目根目录下的static文件夹中。
# 静态文件访问的url路径
STATIC_URL = '/static/'
# 静态文件的磁盘路径
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
缓存
# 缓存
CACHES = {
"default": { # 默认
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/0", # 可改:ip、port、db
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
},
"session": { # session
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}
session
在Django中,会话(session)是一种用于在不同请求之间存储数据的机制。会话可以存储用户的认证状态、用户偏好设置、购物车内容等信息。
在你提供的代码中,有两个与会话保存方案相关的配置设置:
-
SESSION_ENGINE:表示会话引擎的选择。在你的代码中,SESSION_ENGINE被设置为"django.contrib.sessions.backends.cache",表示会话数据将使用缓存作为存储后端。 -
SESSION_CACHE_ALIAS:表示缓存别名。在你的代码中,SESSION_CACHE_ALIAS被设置为"session",表示使用名为"session"的缓存后端来存储会话数据。
# 指定session的保存方案
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "session"
日志
-
'version': 1: 指定日志配置的版本号。 -
'disable_existing_loggers': False: 指定是否禁用已经存在的日志器。设置为False表示不禁用。 -
'formatters': 配置日志信息显示的格式。-
'verbose': 详细格式,包括日志级别、时间、模块名、行号和消息。 -
'simple': 简单格式,包括日志级别、模块名、行号和消息。
-
-
'filters': 配置日志过滤器。-
'require_debug_true': 通过django.utils.log.RequireDebugTrue过滤器,仅在Django的调试模式下输出日志。
-
-
'handlers': 配置日志处理方法。-
'console': 向终端中输出日志。-
'level': 'INFO': 指定输出的日志级别为INFO。 -
'filters': ['require_debug_true']: 应用过滤器,仅在Django的调试模式下输出日志。 -
'class': 'logging.StreamHandler': 指定使用StreamHandler将日志输出到终端。 -
'formatter': 'simple': 指定使用简单格式的日志信息。
-
-
'file': 向文件中输出日志。-
'level': 'INFO': 指定输出的日志级别为INFO。 -
'class': 'logging.handlers.RotatingFileHandler': 指定使用RotatingFileHandler将日志输出到文件。 -
'filename': os.path.join(os.path.dirname(BASE_DIR), 'logs/meiduo.log'): 指定日志文件的位置。 -
'maxBytes': 300 * 1024 * 1024: 指定日志文件的最大大小为300MB。 -
'backupCount': 10: 指定保留的日志文件数量为10个。 -
'formatter': 'verbose': 指定使用详细格式的日志信息。
-
-
-
'loggers': 配置日志器。-
'django': 定义了一个名为django的日志器。-
'handlers': ['console', 'file']: 指定将日志同时输出到终端和文件中。 -
'propagate': True: 指定是否继续传递日志信息。 -
'level': 'INFO': 指定日志器接收的最低日志级别为INFO。
-
-
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/meiduo.log'), # 日志文件的位置
'maxBytes': 300 * 1024 * 1024,
'backupCount': 10,
'formatter': 'verbose'
},
},
'loggers': { # 日志器
'django': { # 定义了一个名为django的日志器
'handlers': ['console', 'file'], # 可以同时向终端与文件中输出日志
'propagate': True, # 是否继续传递日志信息
'level': 'INFO', # 日志器接收的最低日志级别
},
}
}
指定用户模型类
# 指定用户模型类
AUTH_USER_MODEL = 'users.User' # 应用名称.模型类名称
认证后端
AUTHENTICATION_BACKENDS = [
'meiduo_mall.utils.authenticate.NiuboModelBackend',
'django.contrib.auth.backends.ModelBackend', # 默认的认证后端
]
指定登录视图URL地址
# 指定登录视图URL地址
LOGIN_URL = '/login/'
JWT配置
# JWt配置
JWT_AUTH = {
# 指定有效期
'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1),
# 指定返回结果方法
'JWT_RESPONSE_PAYLOAD_HANDLER':
'meiduo_admin.utils.jwt_response_payload_handler',
}

浙公网安备 33010602011771号