一个简单的项目必须具备的基本配置信息由:项目路径、密钥、域名访问权限、APP列表和中间件。下面是settings.py文件的各个参数的配置。
import os
# 项目路径,创建项目时自动生成,一般无需修改
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# 密钥配置,这是一个随机值,用于重要数据加密处理(用户密码、CSRF机制和会话Session),无需修改
SECRET_KEY = 'm5#*$8q+oft@@gfplmuwlz($yc(&k_i$e^+u!!7=ao*0k9j$0r'
# 调试模式,开发调试阶段设置True,避免代码发生更改。部署上线后设置为False
DEBUG = False
# 域名访问权限,设置可访问的域名。当DEBUG为False时,这是必填项。
ALLOWED_HOSTS = ['*'] # 表示允许所有域名访问
# App列表,告诉Django有哪些App。如果创建了App就在这里注册,如index
INSTALLED_APPS = [
'django.contrib.admin', # 内置的后台管理系统
'django.contrib.auth', # 内置的用户认证系统
'django.contrib.contenttypes', # 记录项目中所有model元数据(Django的ORM框架)
'django.contrib.sessions', # Session回话功能,用于表示当前用户身份,记录信息
'django.contrib.messages', # 消息提示功能
'django.contrib.staticfiles', # 查找静态资源路径
'index', # 开发者创建的App
]
# 中间件,用来处理Django的请求和响应的框架级别的钩子,是一个插件系统,用于在全局范围内改变Django的输入和输出。
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware', # 内置安全机制,保证通信安全
'django.contrib.sessions.middleware.SessionMiddleware', # 会话功能
'django.middleware.common.CommonMiddleware', # 处理请求信息
'django.middleware.csrf.CsrfViewMiddleware', # 开启CSRF功能
'django.contrib.auth.middleware.AuthenticationMiddleware', # 开启内置用户认证系统
'django.contrib.messages.middleware.MessageMiddleware', # 开启内置信息提示功能
'django.middleware.clickjacking.XFrameOptionsMiddleware', # 防止恶意程序单机劫持
# 添加LocaleMiddleware,使Django内置的功能支持中文显示
'django.middleware.locale.LocaleMiddleware', # 国际化和本地化功能
]
# 指定根路由位置
ROOT_URLCONF = 'MyDjango.urls'
# 模板是一种较为特殊的HTML文档,嵌入了一些Django能识别的变量和指令,然后由模板引擎解析,生成完整的网页供用户浏览。一般在根目录的template存放共用的模板文件,供各个App调用。下面是默认的配置信息。
TEMPLATES = [
{
# BACKEND用于定义模板引擎,用于识别变量和指令。内置的引擎有Django Template和jinja2.
'BACKEND': 'django.template.backends.django.DjangoTemplates',
# 设置模板所在路径,默认为空
'DIRS': [],
# 是否在App里面查找模板文件
'APP_DIRS': True,
# 用于填充在RequestContest的上下文,不需修改。
'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',
], },
},
]
# 用于指定用于处理HTTP请求的WSGI应用程序
WSGI_APPLICATION = 'MyDjango.wsgi.application'
# 数据库配置。Django提供4种引擎(mysql、postgresql、sqlite3、oracle)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'messagedb',
'USER': 'root',
'PASSWORD': '1234',
'HOST': '127.0.0.1',
'PORT': '3306',
},
}
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 = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# 资源路由,一般的应用程序中,静态资源包括CSS、JS、图片等资源。
STATIC_URL = '/static/' # 这是静态资源的路由地址,默认只识别当前App的static的静态资源。
# 资源集合, 解决的资源路由的限制问题。资源集合把不同目录的static文件集合在一起
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),
os.path.join(BASE_DIR, 'index/Mystatic'),]
# 资源部署,作用是在服务器上部署项目,实现服务器和项目之间的映射,主要收集整个项目的静态资源并存放在一个新的资源文件夹,然后由该文件构建文件夹与服务器之间构建映射关系。
STATIC_ROOT = os.path.join(BASE_DIR, 'AllStatic')
上面提到了静态资源,但是对于一些经常变动的资源,通常将其放在媒体资源文件夹,如用户图片。
# settings.py文件对媒体路由设置
MEDIA_URL = '/media/'
# 获取media文件夹完整的路径信息
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
再将media文件注册到Django里面。
# 与项目名同名的文件下的urls.py
from django.views.static import serve
from django.conf import settings
urlpatterns = [
path('admin/', admin.site.urls),
path('', index),
# 配置媒体文件的路由地址
re_path('media/(?P<path>.*)', serve, ('document_root': settings.MEDIA_ROOT),name='mmedia'),]