配置文件
在django中默认的核心包里面存在了一个全局默认配置文件django.conf.global_settings.py
, 同时在开发者构建项目的时候, 也生成了一个全局配置文件在主应用.setting.py
文件中.
这两个配置文件,在django项目运营时, 系统先加载了global_settings.py
中的所有配置项, 接着加载setting.py配置的.所以settings.py中填写的配置项的优先级会高于global_settings.py
默认配置。
参考文档:https://docs.djangoproject.com/en/3.2/ref/settings/
""" Django settings for demo project. Generated by 'django-admin startproject' using Django 3.2.3. For more information on this file, see https://docs.djangoproject.com/en/3.2/topics/settings/ For the full list of settings and their values, see https://docs.djangoproject.com/en/3.2/ref/settings/ """ # 路径模块 from pathlib import Path import os # Build paths inside the project like this: BASE_DIR / 'subdir'. # __file__ 基于当前文件所在的位置,记录文件路径的 # Path(__file__) 基于当前所在路径创建了路径操作对象 # Path(__file__).resolve() 获取当前路径的绝对路径对象 # Path(__file__).resolve().parent 获取当前路径的父级路径,__file__就是settings, parent代表的就是主应用目录, parent.parent就是项目根目录 # BASE_DIR就是项目根目录 BASE_DIR = Path(__file__).resolve().parent.parent # BASE_DIR的作用就是提供给项目中所有需要使用路径的内容提供一个公共的不依赖于操作系统的基本路径起点。 # 项目中一般我们会使用大写的变量来表示一个常量,所谓常量就是在开发中,用于表示一些固定数据的标记符,这种标记符,在其他语言中是基本语法来的,但是在python中并没有常量, # 所以,就有了一些开发者声明一些大写的变量用于充当常量,常量一经定义,不能赋值。 # 因此,我们作为开发人员,就要遵守这种约定,以后如果希望项目中的一些数据不要被人修改,则可以声明成常量。 # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/ # 秘钥,用于提供给加密算法的秘钥 # 加密: 哈希串 = 加密算法(原始密码, 秘钥) # 验证: 新哈希串 = 加密算法(原始密码, 秘钥), 新哈希串==哈希串,则表示原始密码正确 # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'django-insecure-^0mjrukr-e-1co-p7ms9sd=gf!60#!*pmmw+)wf12esyxm$jtu' # SECURITY WARNING: don't run with debug turned on in production! # 调试模式,用于在开发阶段提供调试/开发帮助 # 1. 提供非常完善的错误提示。 # 2. 监控整个项目的目录文件变化,当文件一旦发生变化,debug里面的reload模块就是帮我们把项目重启 # 项目开发有2阶段: # 第1阶段:开发阶段,本地阶段,debug一般是开启状态 # 第2阶段:运营阶段,生产阶段,debug必须是关闭状态,debug模式关闭以后必须设置ALLOWED_HOSTS选项 DEBUG = True # 设置允许客户端通过哪些地址/语法访问到django服务端,"*"表示所有 ALLOWED_HOSTS = ["*"] # Application definition # 注册子应用列表,写在这里的子应用路径,将来如果子应用用到了模板的过滤器语法,数据库时,就必须注册子应用到这里来,否则我们声明的内容(过滤器语法,数据库)就无法被django识别到 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'home', # 开发者创建的子应用,这填写就是子应用的导包路径 ] # 中间件,MIDDLEWARE,就是一个django提供给开发者用于在http请求和响应过程中,进行数据拦截的插件系统/钩子系统 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', # ctrl+/ 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] # 总路由的导包路径 ROOT_URLCONF = 'demo.urls' # 模板引擎配置 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], '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', ], }, }, ] # wsgi服务器程序的入口文件 WSGI_APPLICATION = 'demo.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', } } import os # 配置session存储方式 SESSION_ENGINE = "django.contrib.sessions.backends.file" # 配置session保存路径 SESSION_FILE_PATH = BASE_DIR / "session_path" # 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' LANGUAGE_CODE = 'zh-hans' # UTC就是0时区 # TIME_ZONE = 'UTC' TIME_ZONE = 'Asia/Shanghai' 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'
Django 采用了 MVT 的软件设计模式组织代码结构的,即模型(Model),视图(View)和模板(Template)。
M,Model,模型,是一个类或者函数,里面的代码就是用于完成操作数据库的。
V,View,视图,是一个类或者函数,里面的代码就是用于项目功能逻辑的,一般用于调用模型来获取数据,获取到的数据通过调用模板返回给客户端。
T,Template,模板,是一个保存了特殊语法的前端html内容文件,里面的代码就是用于展示给客户端的页面效果。
这个MVT模式并非django首创,在其他的语言里面也有类似的设计模式MVC,甚至可以说django里面的MVT事实上是借鉴了MVC模式衍生出来的。
M,Model,模型,是一个类或者函数,里面的代码就是用于完成操作数据库的。
V,View,视图,里面的代码就是用于展示给客户端的页面效果。可以是一个具有特殊语法的HTML文件,也可以是一个数据结构。
C,Controller,控制器,是一个类或者函数,里面的代码就是用于项目功能逻辑的,一般用于调用模型来获取数据,获取到的数据通过调用视图文件返回给客户端。
这个就是Django内部文件的执行流程图