Django——全局配置settings详解
Django设置文件包含你所有的Django安装配置。这个文件一般在你的项目文件夹里。比如我们创建了一个名为mysite的项目,那么这个配置文件setting.py就在项目里的mysite文件夹里。
下面列表一些常用的settings配置供参考。
1.配置静态文件
#STATIC_URL = '/static/'为静态文件别名 STATIC_URL = '/static/' #静态文件地址拼接,后面'static'文件为自己建立的存放静态文件(JS,IMG,CSS)的文件名 STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), #主文件下静态文件 os.path.join(BASE_DIR,"blog","statics"),#项目blog文件下静态文件 )
2、mysql数据库配置
########在setting原来默认的sqlite DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } ############修改成mysql如下 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'test', #你的数据库名称 'USER': 'root', #你的数据库用户名 'PASSWORD': '123', #你的数据库密码 'HOST': '', #你的数据库主机,留空默认为localhost 'PORT': '3306', #你的数据库端口 }} #由于mysql默认引擎为MySQLdb,在__init__.py文件中添加下面代码 #在python3中须替换为pymysql,可在主配置文件(和项目同名的文件下,不是app配置文件)中增加如下代码 import pymysql pymysql.install_as_MySQLdb() #如果找不到pymysql板块,则通过pip install pymysql进行安装。
3、设置打印日志到屏幕
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console': { 'level': 'DEBUG', 'class': 'logging.StreamHandler', }, }, 'loggers': { 'django.db.backends': { 'handlers': ['console'], 'propagate': True, 'level': 'DEBUG', }, } }
4、语言
LANGUAGE_CODE = 'en-us'# 默认 LANGUAGE_CODE = 'zh-hans'# 改为中文,主要针对admin页面
5、配置模板路径
TEMPLATE_DIRS = ( os.path.join(BASE_DIR,'templates'), ) #然后在项目根目录下添加templates文件夹
6、注册APP
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app1.apps.App1Config', # 默认已有 如果没有只要添加app名称即可 例如: 'blog' # 新建的应用都要在这里添加 ]
7、sql语句
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console': { 'level': 'DEBUG', 'class': 'logging.StreamHandler', }, }, 'loggers': { 'django.db.backends': { 'handlers': ['console'], 'propagate': True, 'level': 'DEBUG', }, } }
8、如果数据库中的UserInfo(用户表)继承django内置AbstractUser
1)models导入
from django.contrib.auth.models import AbstractUser
2)settings.py导入
AUTH_USER_MODEL = "应用名.UserInfo"
9、中间件,自己写的中间件
例如在项目中的md文件夹下md.py文件中的M1与M2两个中间件
MIDDLEWARE = [ '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', 'md.md.M1', 'md.md.M2', ]
需要注意的是自己写的中间件,配置要写在系统中的后面
10、session存储的相关配置
1)数据库配置(默认)
Django默认支持Session,并且默认是将Session数据存储在数据库中,即:django_session 表中。 配置 settings.py SESSION_ENGINE = 'django.contrib.sessions.backends.db' # 引擎(默认) SESSION_COOKIE_NAME = "sessionid" # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认) 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 = 1209600 # Session的cookie失效日期(2周)(默认) SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 是否关闭浏览器使得Session过期(默认) SESSION_SAVE_EVERY_REQUEST = False # 是否每次请求都保存Session,默认修改之后才保存(默认)
2)缓存配置
配置 settings.py SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # 引擎 SESSION_CACHE_ALIAS = 'default' # 使用的缓存别名(默认内存缓存,也可以是memcache),此处别名依赖缓存的设置 SESSION_COOKIE_NAME = "sessionid" # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串 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 = 1209600 # Session的cookie失效日期(2周) SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 是否关闭浏览器使得Session过期 SESSION_SAVE_EVERY_REQUEST = False # 是否每次请求都保存Session,默认修改之后才保存
3)默认配置
配置 settings.py SESSION_ENGINE = 'django.contrib.sessions.backends.file' # 引擎 SESSION_FILE_PATH = None # 缓存文件路径,如果为None,则使用tempfile模块获取一个临时地址tempfile.gettempdir() SESSION_COOKIE_NAME = "sessionid" # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串 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 = 1209600 # Session的cookie失效日期(2周) SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 是否关闭浏览器使得Session过期 SESSION_SAVE_EVERY_REQUEST = False # 是否每次请求都保存Session,默认修改之后才保存
11、配置文件上传目录
#设置文件上传路径 MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
如果想在浏览器里访问自己上传的文件则需要在urls.py做如下设置:
from django.views.static import serve from django.conf import settings urlpatterns = [ ... re_path('^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}), ]
参考自:https://blog.csdn.net/weixin_47649808/article/details/126366676