25、Django开发总结:settings.py设置选项详解
创始人
2025-05-30 17:01:36
0

本篇涉及settings.py默认配置项,以及自定义的MySQL、MongoDB、PostgreSQL、HAYSTACK、Redis详细参数、Memcached缓存、邮件服务、celery、自定义APP、自定义中间件、COOKIE与SESSION、TEMPLATES模板等配置项的详细说明。

深入解读Django配置文件settings.py中的常用各个选项以及配置过程中的注意事项,注意: 在正式部署Django项目时一定要注意修改settings.py。使用django-admin.py startproject xxx命令创建一个Django项目,settings.py包含的选项非常多,但大部分不需要手动去设置。

一个项目完整的全局默认设置在django/conf/global_settings.py文件中。Django在编译时,会先载入global_settings.py中的全局默认配置值,然后加载用户指定的settings.py文件,重写部分全局默认设置。
在这里插入图片描述

最新配置参考说明参考:
https://gitee.com/SteveRocket/python_framework/blob/master/django_framework/language_characteristic/language_characteristic/settings.py

BASE_DIR

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent # WindowsPath
# Django项目文件夹所在目录的绝对路径(项目根目录),项目中的所有的文件都需要依赖此路径
# 老版本写法
# BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # str类型

sys.path.insert

sys.path.insert(0, os.path.join(BASE_DIR, 'packages'))
# 解决自定义packages文件夹 下面放置app的问题
# django.core.exceptions.ImproperlyConfigured: Cannot import 'mako_pro'. Check that 'packages.mako_pro.apps.MakoProConfig.name' is correct.

SECRET_KEY


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/4.1/howto/deployment/checklist/# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-!hh4oj&-(8xp$d-17!bzmx+ilgkccym32ovkx7hr4f#9cs5y-6'
# 是Django根据自己算法生成的一大串随机数,本质是个加密盐,一般配合加密算法 Hash、MD5 一起使用,用于防止CSRF(Cross-site request forgery)跨站请求伪造攻击。
# 用户密码的加密或者建立会话时用到的 sessionid 都需要用到 SECRET_KEY
# 当部署Django项目到生产环境中时,Django文档建议不直接在settings.py里输入字符串,而是采取下面几种方法读取SECRET_KEY。
# 从环境变量中读取SECRET_KEY
# SECRET_KEY = os.environ['SECRET_KEY']# 从服务器上Django项目文件价外的某个文件读取
# with open('/etc/secret_key.txt') as f:
#     SECRET_KEY = f.read().strip()

DEBUG

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
# 默认值是True。在本地开发测试环境下设置DEBUG=True可以显示bug信息,便于开发者找出代码错误所在。
# 当部署项目在生产环境时,请切记设置DEBUG=False。因为生产环境下打开Debug一旦发生错误或异常会暴露很多敏感设置信息(比如数据库密码)。
# 注意: 当设置DEBUG=False, 一定要设置ALLOWED_HOSTS选项, 否则会抛出异常。

ALLOWED_HOSTS

ALLOWED_HOSTS = []
# 允许的主机
# 默认值为空[]。设置ALLOWED_HOSTS是为了限定用户请求中的host值,以防止黑客构造包来进行头部攻击。
# DEBUG=True: ALLOWED_HOSTS可以为空,也可设置为['127.0.0.1', 'localhost']
# 用于配置能够访问当前站点的域名(IP地址),当 DEBUG = False 时,必须填写# DEBUG=False: ALLOWED_HOSTS=['123.124.78.123', 'www.domain.com','127.0.0.1']
# 当关闭DEBUG时,HOST一般为服务器公网IP或者注册域名。 当还需要使用子域名时,可以用.bat.com。它将匹配bat.com, www.bat.com和news.bat.com。
# 在正式部署项目时,尽量不要设置ALLOWED_HOSTS=['*'],表示任何网络地址都能访问到当前项目。

INSTALLED_APPS

# Application definition
# 用来安装的应用(APP)的列表,增删一个项目(Project)所包含的应用(APP)。只有对列入此项的APP, Django才会生成相应的数据表
# Django 把默认自带的应用放在这个列表里,比如 Admin 后台应用、Auth 用户管理系统等
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','django.contrib.sites',### 三方APP# 'haystack''rest_framework',#### allauth'allauth','allauth.account','allauth.socialaccount','allauth.socialaccount.providers.github',### celery app'django_celery_results','django_celery_beat',### 自己的APP'django4_characteristic',### packages中自己的APP'packages.mako_pro','packages.drf_pro','packages.mongo_orm_pro'
]SITE_ID = 1

中间件

MIDDLEWARE = [# 自带中间件'django.middleware.security.SecurityMiddleware', # 为request/response提供了几种安全改进;'django.contrib.sessions.middleware.SessionMiddleware', # 开启session会话支持,用于处理会话'django.middleware.common.CommonMiddleware', # 基于APPEND_SLASH和PREPEND_WWW的设置来重写URL,如果APPEND_SLASH设为True,并且初始URL 没有以斜线结尾以及在URLconf 中没找到对应定义,这时形成一个斜线结尾的新URL;'django.middleware.csrf.CsrfViewMiddleware', # 添加跨站点请求伪造的保护,通过向POST表单添加一个隐藏的表单字段,并检查请求中是否有正确的值;'django.contrib.auth.middleware.AuthenticationMiddleware', # 在视图函数执行前向每个接收到的user对象添加HttpRequest属性,表示当前登录的用户,无它用不了request.user'django.contrib.messages.middleware.MessageMiddleware', # 开启基于Cookie和会话的消息支持'django.middleware.clickjacking.XFrameOptionsMiddleware', # 对点击劫持的保护# 自定义中间件'packages.drf_pro.middleware.calc_middleware',  # 以方法命名的中间件'packages.drf_pro.middleware.SimpleMiddleware','packages.drf_pro.middleware.LoginRequiredMiddleware'
]

ROOT_URLCONF

ROOT_URLCONF = 'language_characteristic.urls'
# 项目根URL
# 指定了当前项目的根 URL,是 Django 路由系统的入口

LOGIN_URL & OPEN_URLS

LOGIN_URL = "/admin/login/"
OPEN_URLS = ["/admin/"]

WSGI_APPLICATION

# 项目部署时,Django 的内置服务器将使用的 WSGI 应用程序对象的完整 Python 路径。
WSGI_APPLICATION = 'language_characteristic.wsgi.application'

数据库配置

HAYSTACK
HAYSTACK_CONNECTIONS = {'default': {# 'ENGINE': 'haystack.backends.elasticsearch7_backend.Elasticsearch7SearchEngine',  # 引擎版本需要根据自己的版本进行选择# 'ENGINE': 'haystack.backends.whoosh_cn_backend.WhooshEngine', # error django框架在2.0版本以上已经不存在whoosh_cn_backend'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine','PATH': os.path.join(BASE_DIR, 'whoosh_index'),'URL': 'http://127.0.0.1:9200/',  # es的服务地址'INDEX_NAME': 'steverocket', # 索引的名称,必须是小写}
}
PostgreSQL
DATABASES = {'default': {'ENGINE': 'django.db.backends.postgresql_psycopg2',   # 数据库引擎'NAME': 'steverocket',         # 数据库名,Django不会帮你创建,需要自己进入数据库创建。'USER': 'postgres',     # 设置的数据库用户名'PASSWORD': '',     # 设置的密码'HOST': 'localhost',    # 本地主机或数据库服务器的ip'PORT': '5432',         # 数据库使用的端口# 设置持久化连接时间# 如果没有持久化连接,每个请求都会与数据库创建一个连接,直到请求结束关闭连接。每次建立和关闭连接也需要花费一些时间'CONN_MAX_AGE': 60,     # 60秒  不宜设置过大。当并发请求数量很高时,应该设置低一点。反之可以设置高一点。}
}
SQLite
# Django默认使用轻量级的SQLite数据库,无需进行任何设置开箱即用。
# https://docs.djangoproject.com/en/4.1/ref/settings/#databases
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': BASE_DIR / 'db.sqlite3',}
}
MySQL
# pip install pymysql
# pip install mysqlclient
# 配置方式1
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', # 数据库引擎'NAME': 'test3',   # 数据库名,Django不会帮你创建,需要自己进入数据库创建。'HOST': '127.0.0.1',  # 数据库服务器的ip'USER': 'root',  # 设置的数据库用户名'PASSWORD': '', # 设置的密码'PORT': 3306,  # 数据库使用的端口'TEST': {'CHARSET': 'utf8','COLLATION': 'utf8_general_ci'},},
}
# 配置方式2:采取读取外部配置文件的方式,更安全
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', # 数据库引擎'OPTIONS': {'read_default_file': 'my.cnf',}},
}
MongoDB
# MongoDB djongo
DATABASES = {'default': {'ENGINE': 'djongo','NAME': "django4",'ENFORCE_SCHEMA': False,  # 如果您希望 Djongo 免迁移,请在您的数据库配置中设置 ENFORCE_SCHEMA: False。使用此设置,集合是动态创建的,Djongo 不会将 SQL 语句转换为 MongoDB 命令。'CLIENT': {'host': 'mongodb://127.0.0.1:27017/django4',# 'username': '',# 'password': '',# 'authSource': 'admin1',# 'authMechanism': 'SCRAM-SHA-1',}}
}
import mongoengine# conn = mongoengine.connect('mongodb://:@127.0.0.1:27017/django4/')  # pymongo.errors.InvalidName: database names cannot contain the character '.'
mongoengine_conn = mongoengine.connect(host="127.0.0.1", port=27017, db="django4")

Redis缓存设置

# CACHES Redis
import fakeredisCACHES = {'default': {# "BACKEND": "django_redis.cache.RedisCache","BACKEND": "django.core.cache.backends.redis.RedisCache",# 默认客户端"LOCATION": "redis://127.0.0.1:6379/1",  # redis服务器地址信息# 默认客户端支持主从配置  以下第一个字段代表 master 服务器, 第二个字段代表 slave 服务器.# "LOCATION": [#     "redis://127.0.0.1:6379/1",#     "redis://127.0.0.1:6378/1"# ],# 分片客户端# "LOCATION": [#     "redis://127.0.0.1:6379/1",#     "redis://127.0.0.1:6379/2"# ],"OPTIONS": {# 可扩展客户端# django_redis 设计的非常灵活和可配置。它提供了可扩展的后端,拥有易扩展的特性# 默认客户端# "CLIENT_CLASS": "django_redis.client.DefaultClient",# 分片客户端# "CLIENT_CLASS": "django_redis.client.ShardClient",# 集群客户端# "CLIENT_CLASS": "django_redis.client.HerdClient",# 设置集群超时 (默认值为: 60s)# "CACHE_HERD_TIMEOUT": 100,# 选择数据库# 'db': '1',# 设置密码# "PASSWORD": ""# 可扩展 Redis 客户端# 定制基于 Redis 的客户端可以用来测试 可以不用依赖真的 redis server 做集成测试."REDIS_CLIENT_CLASS": "fakeredis.FakeStrictRedis",# django-redis 默认使用 redis.client.StrictClient 作为 Redis 客户端, 你可以使用其他客户端替代, 比如上面用于测试时用 fakeredis 代替真实客户端# 使用 REDIS_CLIENT_CLASS in the CACHES 来配置你的客户端, 使用 REDIS_CLIENT_KWARGS 提供配置客户端的参数 (可选).# "REDIS_CLIENT_CLASS": "my.module.ClientClass",# "REDIS_CLIENT_KWARGS": {"some_setting": True},# django-redis 使用 pickle 序列化几乎所有数据.默认使用最新的 pickle. 如果你想设置其他版本, 使用 PICKLE_VERSION 参数"PICKLE_VERSION": -1,  # Use the latest protocol version# 套接字超时设置使用 SOCKET_TIMEOUT 和 SOCKET_CONNECT_TIMEOUT 参数"SOCKET_CONNECT_TIMEOUT": 5,  # in seconds  socket 建立连接超时设置"SOCKET_TIMEOUT": 5,  # in seconds  连接建立后的读写操作超时设置# django-redis 支持压缩, 但默认是关闭的. 可以激活它"COMPRESSOR": "django_redis.compressors.zlib.ZlibCompressor",# 使用 lzma 压缩# "COMPRESSOR": "django_redis.compressors.lzma.LzmaCompressor",# 当redis关闭时 如果不希望触发异常,为了忽略连接异常, 使用 IGNORE_EXCEPTIONS 参数"IGNORE_EXCEPTIONS": True,# 连接池# django-redis 使用 redis-py 的连接池接口, 并提供了简单的配置方式. 除此之外, 你可以为 backend 定制化连接池的产生.# redis-py 默认不会关闭连接, 尽可能重用连接# 配置默认连接池,CONNECTION_POOL_KWARGS 设置连接池的最大连接数量即可"CONNECTION_POOL_KWARGS": {"max_connections": 100},# 可扩展解析器# redis-py (django-redis 使用的 Redis 客户端) 支持的纯净 Python Redis 解析器可以满足大部分普通任务, 但如果你想要性能更好, 可以使用 hiredis# hiredis 是一个用 C 写的 Redis 客户端, 并且他的解析器可以用在 django-redis 中"PARSER_CLASS": "redis.connection.HiredisParser",'POOL_CLASS': 'redis.ConnectionPool',# 可扩展序列器# 客户端在将数据发给服务器之前先会序列化数据. django-redis 默认使用 Python pickle 序列化数据.# 如果需要使用 json 序列化数据, 使用 JSONSerializer"SERIALIZER": "django_redis.serializers.json.JSONSerializer",# 使用 MsgPack http://msgpack.org/ 进行序列化 (需要 msgpack-python 库支持)# "SERIALIZER": "django_redis.serializers.msgpack.MSGPackSerializer",}}
}
# 为了忽略所有缓存连接异常, 使用 DJANGO_REDIS_IGNORE_EXCEPTIONS 也可以给所有缓存配置相同的忽略行为
DJANGO_REDIS_IGNORE_EXCEPTIONS = True# 日志忽略异常
# 当使用 IGNORE_EXCEPTIONS 或者 DJANGO_REDIS_IGNORE_EXCEPTIONS 参数忽略异常时, 你也许会用到 DJANGO_REDIS_LOG_IGNORED_EXCEPTIONS 参数来配置日志异常
DJANGO_REDIS_LOG_IGNORED_EXCEPTIONS = True
# 如果你想设置指定的 logger 输出异常, 只需要设置全局变量 DJANGO_REDIS_LOGGER 为 logger 的名称或其路径即可. 如果没有 logger 被设置并且 DJANGO_REDIS_LOG_IGNORED_EXCEPTIONS=True 时此参数将取 name
DJANGO_REDIS_LOGGER = 'some.specified.logger'

Memcached缓存

localhost
# Memcached是基于内存的缓存,Django原生支持的最快最有效的缓存系统。对于大多数场景,推荐使用Memcached,数据缓存在服务器端。使用前需要通过pip安装memcached的插件python-memcached和pylibmc,可以同时支持多个服务器上面的memcached
CACHES = {'default': {'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache','LOCATION': '127.0.0.1:11211',}
}
unix soket
CACHES = {'default': {'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache','LOCATION': 'unix:/tmp/memcached.sock',}
}# CACHES = {
#     'default': {
#         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
#         'LOCATION': [
#             '192.168.1.89:11211',
#             '192.168.1.90:11211',
#         ],
#         # 也可以给缓存机器加权重,权重高的承担更多的请求,如下
#         # 'LOCATION': [
#         #     ('192.168.1.89:11211',5),
#         #     ('192.168.1.90:11211',1),
#         # ]
#     }
#  }
数据库缓存
# CACHES = {
#     'default': {
#         'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
#         'LOCATION': 'my_cache_table',
#     }
# }
文件系统缓存
CACHES = {'default': {'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache','LOCATION': '/var/tmp/django_cache',#这个是文件夹的路径#'LOCATION': 'c:\foo\bar',#windows下的示例}
}
本地内存缓存
CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache','LOCATION': 'unique-snowflake'}
}

COOKIE与SESSION设置

# 缓存临时性数据,如session
# SESSION_ENGINE = "django.contrib.sessions.backends.db"  # 引擎(默认)
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"
SESSION_COOKIE_NAME = "sessionid"  # Session的cookie保存在浏览器上时的key,
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 = 60 * 30  # Session的cookie失效日期(30min)(默认)
SESSION_EXPIRE_AT_BROWSER_CLOSE = True  # 是否关闭浏览器使得Session过期(默认)
SESSION_SAVE_EVERY_REQUEST = True  # 是否每次请求都保存Session,默认修改之后才保存

TEMPLATES 模板设置 - 模板缓存

# django默认情况下每处理一个请求都会使用模板加载器  都会去文件系统搜索模板。然后渲染模板。 可以通过cached.Loader开启模板缓存加载,此时只会查找并且解析模板一次,可以大大提升模板渲染效率
# 如果在根目录下建立了一个templates文件夹,专门用于存放属于项目的模板文件,还需要在settings.py中显示地将模板目录设置为BASE_DIR目录下的templates文件夹。
TEMPLATES = [{#  Django 默认自带模板引擎'BACKEND': 'django.template.backends.django.DjangoTemplates',# 设置项目模板目录# 'DIRS': [BASE_DIR / 'templates'],# 'DIRS': [os.path.join(BASE_DIR, 'templates')],'DIRS': [],# 'APP_DIRS': True,'OPTIONS': {'context_processors': [# 以下包含了4个默认的全局上下文处理器'django.template.context_processors.debug',  # 在模板里面可以直接使用settings的DEBUG参数以及强大的sql_queries:它本身是一个字典,其中包括当前页面执行SQL查询所需的时间'django.template.context_processors.request', # 在模板中可以直接使用request对象'django.contrib.auth.context_processors.auth', # 在模板里面可以直接使用user,perms对象'django.contrib.messages.context_processors.messages', #在模板里面可以直接使用message对象# Django另外的几个全局上下文处理器'django.template.context_processors.i18n', # 在模板里面可以直接使用settings的LANGUAGES和LANGUAGE_CODE'django.template.context_processors.media', # 可以在模板里面使用settings的MEDIA_URL参数'django.template.context_processors.csrf', # 给模板标签 csrf_token提供值'django.template.context_processors.tz',  # 可以在模板里面使用 TIME_ZONE参数。# 自定义的全局上下文处理器'packages.mako_pro.context_processors.global_site_name'],# 开启模板缓存加载'loaders': [('django.template.loaders.cached.Loader', ['django.template.loaders.filesystem.Loader','django.template.loaders.app_directories.Loader',# 'path.to.custom.Loader',]),],},},
]

AUTH_PASSWORD_VALIDATORS 密码验证器

# Password validation
# https://docs.djangoproject.com/en/4.1/ref/settings/#auth-password-validators
# 支持插拔的密码验证器,且可以一次性配置多个,Django 通过这些内置组件来避免用户设置的密码等级不足的问题。
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'
# 国际化 Internationalization
# https://docs.djangoproject.com/en/4.1/topics/i18n/
# 语言配置项  英文:'en-us' 或 中文:'zh-Hans'

TIME_ZONE

# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'
# 设置时区 服务端时区的配置项 世界时区 'UTC' 或中国时区 'Asia/Shanghai'

USE_I18N

USE_I18N = True
# USE_118N 和 USE_L10N 这两个变量值表示是否需要开启国际化和本地化功能。默认开启的状态。
# I18N 指的是国际化英文缩写,L10N 指的是本地化英文缩写。
# 默认为True,是否启用自动翻译系统

USE_L10N

USE_L10N = True
# 默认False,以本地化格式显示数字和时间

USE_TZ

USE_TZ = False
# 对时区的处理方式,当设置为 True 的时候,存储到数据库的时间是世界时间'UTC'
# 默认值True,若使用了本地时间,必须设为False

STATIC_URL & STATIC_ROOT

STATIC_URL = 'static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static")
# 静态资源的存放位置,静态资源包括 CSS、JS、Images
# https://docs.djangoproject.com/en/4.1/howto/static-files/
# STATIC_URL和STATIC_ROOT 关于静态文件(如CSS, JS,和图片)的最重要的设置,一般设置如下。
# STATIC_URL是静态文件URL,设置后可以通过使用{% static 'assets/imges/xxx.jpg' %}方式直接访问/static/文件夹里的静态文件。
# 如果你设置了STATIC_ROOT, 当运行python manage.py collectstatic命令的时候,Django会将各app下所有名为static的文件夹及其子目录复制收集到STATIC_ROOT。
# 把静态文件集中一起的目的是为了更方便地通过Apache或Nginx部署。

STATICFILES_DIRS

# 一般情况下会尽量把静态文件只放在static文件夹或它的子目录下,所以上述两个设置对于一般项目是够的。那么问题来了,如果还有一些文件夹中也有静态文件,
# 可是文件夹并不是以static命名也不在static子目录里,此时也希望搜集使用那些静态文件,该怎么办呢?这时就要设置静态文件目录STATICFILES_DIRS值了。
STATICFILES_DIRS = ["/home/user/practice","/guides", # Django会将此处两个文件夹内容也复制到STATIC_ROOT
]
# 默认值为空。当设置该选项后,"python manage.py collectstatic"命令会把static文件夹及静态文件目录STATICFILES_DIRS里的静态文件都复制到一份到STATIC_ROOT。注意里面的路径必需是绝对路径。

DEFAULT_AUTO_FIELD

# Default primary key field type
# https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-fieldDEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

Celery

# 最重要的配置,设置消息broker,格式为:db://user:password@host:port/dbname
# 如果redis安装在本机,使用localhost
# 如果docker部署的redis,使用redis://redis:6379
CELERY_BROKER_URL = 'redis://127.0.0.1:6379/0'# celery时区设置,建议与Django settings中TIME_ZONE同样时区,防止时差
# Django设置时区需同时设置USE_TZ=True和TIME_ZONE = 'Asia/Shanghai'
CELERY_TIMEZONE = TIME_ZONE# 为django_celery_results存储Celery任务执行结果设置后台
# 格式为:db+scheme://user:password@host:port/dbname
# 支持数据库django-db和缓存django-cache存储任务状态及结果
CELERY_RESULT_BACKEND = "django-db"  # 任务结果数据的储存
# CELERY_CACHE_BACKEND = 'django-cache' # 也可以使用缓存# celery内容等消息的格式设置,默认json
CELERY_ACCEPT_CONTENT = ['application/json', ]
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'# 为任务设置超时时间,单位秒。超时即中止,执行下个任务。
# CELERY_TASK_TIME_LIMIT = 5# 为存储结果设置过期日期,默认1天过期。如果beat开启,Celery每天会自动清除。
# 设为0,存储结果永不过期
# CELERY_RESULT_EXPIRES = 0# 任务限流
# CELERY_TASK_ANNOTATIONS = {'tasks.add': {'rate_limit': '10/s'}}# Worker并发数量,一般默认CPU核数,可以不设置
# CELERY_WORKER_CONCURRENCY = 2# 每个worker执行了多少任务就会死掉,默认是无限的
# CELERY_WORKER_MAX_TASKS_PER_CHILD = 200# 消息中间件的连接
BROKER_URL = CELERY_BROKER_URL# 任务注册路径
# CELERY_INCLUDE =""# 配置文件添加周期性任务
CELERY_BEAT_SCHEDULE = {# 同一任务可以设置成不同的调用周期,定义成不同的任务名即可。"add-every-30s": {"task": "django4_characteristic.tasks.show",'schedule': 30.0, # 每30秒执行1次'args': (3, 8) # 传递参数-},"add-every-day": {"task": "django4_characteristic.tasks.show",'schedule': timedelta(hours=1), # 每小时执行1次'args': (3, 8) # 传递参数-},# 可以通过crontab设置定时任务# 希望在特定的时间(某月某周或某天)执行一个任务,# 'add-every-monday-morning': {#     'task': 'app.tasks.add',#     'schedule': crontab(hour=7, minute=30, day_of_week=1),#     'args': (7, 8),# },
}CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'

DEFAULT_FILE_STORAGE

DEFAULT_FILE_STORAGE = ""
# django 文件存储系统

Email服务配置

ACCOUNT_AUTHENTICATION_METHOD = 'username_emial'
ACCOUNT_EMAIL_REQUIRED = True
LOGIN_REDIRECT_URL = '/accounts/profile/'
AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend','allauth.account.auth_backends.AuthenticationBackend',
)EMAIL_HOST = 'smtp.qq.com' # 发送者邮箱服务器
EMAIL_PORT = 25 # 端口
EMAIL_HOST_USER = ''        # 发送者用户名(邮箱地址)
EMAIL_HOST_PASSWORD = ''    # 发送者密码
EMAIL_USE_SSL = True
EMAIL_USE_TLS = True        # 这里必须是 True,否则发送不成功
EMAIL_FROM = 'xxxx@qq.com'   # QQ 账号
DEFAULT_FROM_EMAIL = "rocket_2014@126.com"
EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"
ADMINS = [("steverocket", "rocket_2014@126.com"), ]

AUTH_USER_MODEL

AUTH_USER_MODEL = auth.user
# 默认为auth.user。也可以为自定义用户模型, 如users.user。

MEDIA_URL & MEDIA_ROOT

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
# media文件夹一般用于放置用户上传的文件。对于此文件夹的权限设置异常重要,因为用户可能会上传可执行的文件,影响网站和服务器的安全。
# 对于此文件夹权限,建议使用sudo chmod 755 media命令设置成755,而不要使用777(可读、可写、可执行)

DATABASE_ROUTERS数据库设置

DATABASE_ROUTERS = ["*.db_routers.BackendRouter"]

DATABASE_APPS_MAPPING

DATABASE_APPS_MAPPING = {'platform_***':'default','data_***':'data_***',
}

相关内容

热门资讯

面试错题本 目录2023.3.21 深信服哈夫曼树哈夫曼编码 2023.3.21 深信服 ​同一线程共享的有堆、...
武昌区多措并举护航端午假期,中... 极目新闻通讯员 费帆 葛倚兵 刘朵 栏题 5月31日,端午节首日。为了确保游客出行安全和顺畅,武昌...
畅享南宁至靖西自驾游攻略:路线... 南宁,这座广西的首府,是一个充满活力的城市,四周环绕着壮丽的自然风光。而靖西,作为广西的一颗璀璨明珠...
“龙舟水”期间出游安全提示 当前,广东省已进入“龙舟水”集中降雨期,极端天气频发,暴雨洪涝、山体滑坡、城乡内涝等风险显著增加。江...
现代数据栈MDS应用落地介绍—... Dazdata MDS 现代数据栈MDS的出现使得中小企业低成本获得大数据处理能力成为可能ÿ...
速看!面试高频题! 答案都给你... 互联网中高薪,门槛相对较低的产品经理,正成为越来越多人的职业选择。而“工...
西葫芦虾滑饼:鲜嫩虾滑与清爽西... 准备材料:西葫芦虾滑盐白胡椒粉 具体步骤:西葫芦刨丝:将西葫芦刨成细丝。加盐杀出水分:在西葫芦丝上...
原创 饭... 标题:饭店里最坑爹的三道菜,图一我忍了,图三你要是能吃下去我服你。 在美食的世界里,我们总是对那些...
酱汁浓郁好吃到起飞的家庭版香菇... "这真的是自己做的炸酱?"老公盯着碗里乌黑发亮的炸酱,筷子悬在半空迟迟不敢落下。在北京胡同住了40年...
泊头鸭梨多种吃法 泊头鸭梨凭借其皮薄肉细、汁多脆甜的特点,可衍生出多种特色吃法,结合传统养生智慧与现代创意,形成独特的...
原创 误... 哪怕只有一个人吃饭,也要做到精致得体,美食、不仅仅是为了果腹,更是对生活的一种品味和追求,用心去过好...
原创 夏... 导语:夏天,鸡蛋和它才是绝配,通便排毒,利湿解暑热,软嫩爽口,遇到别再错过了! 大家好,我是傻姐美食...
SpringBoot整合Jav... 目录 一、创建一个spring boot工程 二、导入JavaFX依赖 三、创建fxml文件以及co...
阅读ReentrantLock... AbstractQueuedSynchronizer,缩写AQS,翻译过...
yolov5 网络结构(暂记) Backbone :Focus + BottleneckCSP+SPP Focus ...
【教程】nginx快速学习 【教程】nginx快速学习备注一、基础概念1.nginx概念2.反向代理和负载均衡二、安装和部署1....
C++中类的静态、常量、引用成... 1、类的静态成员变量,必须在类外再声明一次 这是因为类内的声明只是描述了类的成员变量和...
中国人工智能企业CIMCAI世... 中国上海人工智能企业CIMCAI全球港航人工智能领军者,成熟智慧港航产品数字化航运自动...
适合学生党的蓝牙耳机品牌有哪些... 蓝牙耳机越来越成为我们日常生活中不可或缺的存在,不管是听歌、追剧、玩游戏还是外出运动等...
ES-模糊查询 1. 前缀搜索:prefix 概念:以xx开头的搜索,不计...