Django中配置文件的详细解读
Django中配置文件的详细解读
import os.path from pathlib import Path # Build paths inside the project like this: BASE_DIR / 'subdir'. # 1.项目的根目录 # /Users/duoduo/Luffy/luffy_api/luffy_api BASE_DIR = Path(__file__).resolve().parent.parent import sys sys.path.insert(0, os.path.join(BASE_DIR, 'apps')) sys.path.insert(0, str(BASE_DIR)) # sys.path.insert(0, BASE_DIR) from home import models models.Md() # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/ # 秘钥,设计到加密的django中都会用它 # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'django-insecure-qnol*16brv9vs-x2n9h%6%4p1nnkgh9^tdzj2$2(&id!zn$hk%' # 项目是以debug模式运行,还是非debug莫斯运行 # 项目上线之后DEBUG应该改为False # 1.以debug模式运行,项目可以热更新 # 2.debug为true下,调试者模式下对开发者更友好,可以列出所有路径 # 3.项目出错后前端可以看到 # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True # 它需要搭配 DEBUG= False # 允许我的项目部署在哪个ip地址上,写'*'表示允许所有 ALLOWED_HOSTS = [] # Application definition # django是由多个app组成的,INSTALLED_APPS中配置了内置的app # django是个大而全的框架,内置了很多app, INSTALLED_APPS = [ 'django.contrib.admin', # admin后台权限管理 'django.contrib.auth', # auth权限管理 'django.contrib.contenttypes', # contenttype会存表中内置app与表的关系 'django.contrib.sessions', # session 'django.contrib.messages', # message是django的消息框架,与flask的闪现一样 'django.contrib.staticfiles', # staticfiles用于管理静态资源 'rest_framework', 'home', ] # 中间件 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', # 安全相关,request中为什么有user 'django.contrib.sessions.middleware.SessionMiddleware', # 处理session 'django.middleware.common.CommonMiddleware', # slash的问题,路由带不带斜杠的重定向问题 'django.middleware.csrf.CsrfViewMiddleware', # csrf认证,生成csrf床 'django.contrib.auth.middleware.AuthenticationMiddleware', # 用户认证 'django.contrib.messages.middleware.MessageMiddleware', # 消息框架相关 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] # 根路径 ROOT_URLCONF = 'luffy_api.urls' # 模版文件 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [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', ], }, }, ] # 项目运行的配置 :项目上线允许的时候使用的是uwsgi运行application() WSGI_APPLICATION = 'luffy_api.wsgi.application' # Database # https://docs.djangoproject.com/en/3.2/ref/settings/#databases # 数据库配置 可以配置多数据库 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } } # Password validation # https://docs.djangoproject.com/en/3.2/ref/settings/#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', }, ] # Internationalization # https://docs.djangoproject.com/en/3.2/topics/i18n/ # 国际化 LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/3.2/howto/static-files/ # 静态文件 STATIC_URL = '/static/' # Default primary key field type # https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field # 大整形 DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' # 真实项目上线后,日志文件打印级别不能过低,因为一次日志记录就是一次文件io操作 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.utils.log.RequireDebugTrue', }, }, # 处理器选择在 控制台与文件中进行配置 'handlers': { # 控制台配置 'console': { # 实际开发建议使用WARNING 'level': 'INFO', 'filters': ['require_debug_true'], 'class': 'logging.StreamHandler', 'formatter': 'simple' }, # 文件配置 'file': { # 实际开发建议使用ERROR 'level': 'INFO', 'class': 'logging.handlers.RotatingFileHandler', # 日志位置,日志文件名,日志保存目录必须手动创建,注:这里的文件路径要注意BASE_DIR代表的是小luffyapi 'filename': os.path.join(os.path.dirname(BASE_DIR), "logs", "luffy.log"), # 日志文件的最大值,这里我们设置300M 'maxBytes': 300 * 1024 * 1024, # 日志文件的数量,设置最大日志数量为10 'backupCount': 10, # 日志格式:详细格式 'formatter': 'verbose', # 文件内容编码 'encoding': 'utf-8' }, }, # 日志对象 'loggers': { 'django': { 'level': 'INFO', 'handlers': ['console', 'file'], 'propagate': True, # 是否让日志信息继续冒泡给其他的日志处理系统 }, } } # 全局异常处理 REST_FRAMEWORK = { 'EXCEPTION_HANDLER':'utils.common_exceptions.luffy_exception_handler' }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY