目录
Django的配置文件settings.py用于配置整个网络的环境和功能,核心配置必须有项目路径,密钥配置,域名访问权限,app列表,中间件,资源文件,模板配置,数据库的连接方式
1.基本配置
#项目路径
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/5.1/howto/deployment/checklist/
# 密钥配置
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-3o^y+-xr98$4n0so$+&t8#q#z(yc9!9_scy+1_6wkyd=1)@vpb'
# 调试模式
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
# 域名访问权限
ALLOWED_HOSTS = []
# app列表
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
"app_01.apps.App01Config",
"Helloworld.apps.HelloworldConfig"
]
项目路径:无需修改,自动生成。通过模块读取当前项目在计算机系统的具体路径
密钥配置:无需修改,自动生成。用于加密处理重要数据,如:
用户密码:Django内置的Auth认证系统,具有用户认证和存储用户信息等功能
CSRF机制:表格提交相关,防止窃取网站的用户信息
Session:存放在Cookie中,用于标识当前网站的用户身份,记录用户信息
DEBUG调试模式:在开发调试阶段,应设置为Ture。在开发调试过程中会自动检测代码是否发生更改,根据检测结果执行是否刷新重启系统。如果项目部署上线,那么应将其改为False,否则会泄漏项目的相关信息。
域名访问权限:设置可访问的域名,默认值为空列表,项目只允许以localhost或127.0.0.1在浏览器上访问。当DEBUG为False时,ALLOWED_HOSTS为必填项,否则程序无法启动,如果想允许所有域名访问,可设置ALLOWED_HOSTS[*]。
APP列表:
admin:内置的后台管理系统
auth:内置的用户认证系统
contenttypes:记录项目中所有model元数据(ORM框架)
sessions:Session会话,用于标识当前访问网站的用户身份,记录用户信息
messages:消息提示功能
staticfiles:查找静态资源路径
项目中添加app时,需要编写设置(我的自动生成),必须要加!
2.资源文件配置
资源文件配置分为静态资源和媒体资源。
媒体资源和静态资源是可以同时存在的,而且两者可以独立运行,互不影响。
2.1静态资源
指的是网站中不会改变的文件。在一般的应用程序中,静态资源包括CSS文件、JavaScript文件以及图片等资源文件。
静态资源的配置配置由以下属性进行设置:
①静态资源配置=STATIC_URL
默认配置,app下的static目录为静态资源,可以直接访问,其他目录不行
分别在项目和应用文件夹下创建static目录,放置图片,应用下再创建image比对
在项目文件下的setting中可以看到静态资源默认配置
运行查看
只有应用下的static文件能进行展示
②静态资源集合配置=STATICFILES_DIRS
由于STATIC_URL的特殊性,在开发中会造成诸多不便(将静态文件夹存放在项目的根目录以及定义多个静态文件夹等),通过STATICFILES_DIRS实现多个目录下的静态资源访问
A,B,C图片均可访问,稍加注意image下的C.png是通过static/C.png访问的
③静态资源部署配置=STATIC_ROOT
作用是在服务器上部署项目,实现服务器和项目之间的映射
# 静态资源部署
STATIC_ROOT = BASE_DIR / ‘static’
主要收集整个项目的静态资源并存放在一个新的文件夹,然后由该文件夹与服务器之间构建映射关系
当项目的配置属性 DEBUG 设为True的时候,Django 会自动提供静态文件代理服务,此时整个项目处于开发阶段,因此无须使用STATIC_ROOT。
当配置属性
DEBUG 设为False的时候,意味着项目进入生产环境,Diang0不再提供静态文件代理服务,此时需要在项目的配置文件中设置STATIC_ ROOT。
设置STATIC_ROOT需要使用 Django操作指令collectstatic来收集所有静态资源,这些静态资源都会保存在STATIC_ROOT所设置的文件夹里。
2.2媒体资源配置=MEDIA
对于一些经常变动的资源,通常将其存放在媒体资源文件夹,如用户头像,歌曲文件等
媒体资源只有配置属性MEDIA_URL和 MEDIA_ROOT
MEDIA_URL用于设置媒体资源的路由地址
MEDIA_ROOT用于获取 media文件夹在计算机系统的完整路径信息
在项目文件夹下的urls.py文件中为媒体文件添加相应的路由地址
运行可查看是否添加成功
3.模板配置
一种较为特殊的HTML文档,嵌入了能够让Django识别的变量和指令
模板引擎会解析变量和指令,生产完整的HTML网页并返回给用户浏览
模板是Django的MTV框架中的T部分,配置模板路径可让Django解析时找到模板所在位置
-
BACKEND:定义模板引擎,用于识别模板里面的变量和指令。内置的模板引擎有 DjangoTemplates 和 jinja2.Jinja2,每个模板引擎都有自己的变量和指令语法。
-
DIRS:设置模板所在路径,告诉Django在哪个地方查找模板的位置,默认为空列表。
-
APP_DIRS:是否在App里查找模板文件。
-
OPTIONS:用于填充在RequestContext 的上下文(模板里面的变量和指令),一般情况下不做任何修改。
Django会生成默认模板文件,也可以自己配置
在app下新建模板文件,并编写HTML文件
在app下的views.py中修改定向的html页面
并在项目中的setting.py中添加路径
启动查看是否添加成功
如果定向时,两个模板下的html文件命名相同,则根据DIRS中路径的先后顺序判断生成位置在前的模板中的html文件
4.数据库配置
选择项目所使用的数据库类型,数据库引擎用于实现与数据库的连接
4种数据库引擎:
'django.db.backends.postgresql' 'django.db.backends.mysql'
'django.db.backends.sqlite3' 'django.db.backends.oracle'
项目默认使用sqlite3数据库
可以修改为MySQL数据库
安装MySQL连接模块mysqlclient
安装完成后,修改数据库连接信息
NAME:数据库名字 USER:用户名称 PASSWORD:密码 HOST:地址(默认本地)
PORT:端口号(默认3306,可后期修改)
通过migrate命令来创建Django内置功能的数据表来查看是否连接成功
这些为Django内置自带的Admin后台管理系统,Auth用户系统以及绘画机制等功能需要用到的表
同时也可以支持多数据库
若项目中连接了多个数据库,则数据库之间的使用需要遵从一定的规则和设置。比如项目中定义了多个模型,每个模型所对应的数据表可以选择在某个数据库中生成,如果模型没有指向某个数据库,模型就会在key为default的数据库里生成。
5.中间件
用来处理Django的请求(Request)和响应(Response)的框架级别的钩子,是一个轻量级,低级别的插件系统,用于在全局范围内改变Django的输入和输出
当用户在网站中进行某个操作时,这个过程是用户向网站发送HTTP请求(Request);而网站会根据用户的操作返回相关的网页内容,这个过程称为响应处理(Response)
默认的中间件(Middleware)配置如下:
-
SecurityMiddleware:内置的安全机制,保护用户与网站的通信安全。
-
SessionMiddleware:会话Session功能。
-
LocaleMiddleware:国际化和本地化功能。
-
CommonMiddleware:处理请求信息,规范化请求内容。
-
CsrfViewMiddleware:开启CSRF防护功能。
-
AuthenticationMiddleware:开启内置的用户认证系统。
-
MessageMiddleware:开启内置的信息提示功能。
-
XFrameOptionsMiddleware:防止恶意程序单击劫持。
可以自定义中间件
可以定义五个方法,分别是:
process_request(self,request) 请求views方法之前会执行。
process_view(self, request, callback, callback_args, callback_kwargs) Django会在调用视图函数之前调用process_view方法。
process_template_response(self,request,response) 该方法对视图函数返回值有要求,必须是一个含有render方法类的对象,才会执行此方法
process_exception(self, request, exception) 这个方法只有在视图函数中出现异常了才执行 process_response(self, request, response) 请求执行完成,返回页面前会执行
主要的是process_request和process_response
在自己定义中间件时,必须继承MiddlewareMixin
在app中新建中间件文件夹,创建类并继承MiddlewareMixin,实现process_request和process_response方法
在项目settings下的MIDDLEWARE中添加刚创建的类
可在views中添加print来查看运行情况
运行页面,可在控制台中看到输出语句
6.其他配置
ROOT_URLCONF = 'djangoWeb.urls'
指定了当前项目的根 URL,是 Django 路由系统的入口
WSGI_APPLICATION = 'djangoWeb.wsgi.application'
项目部署时,Django 的内置服务器将使用的 WSGI 应用程序对象的完整 Python 路径
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',
},
]
一个支持插拔的密码验证器,且可以一次性配置多个,Django 通过这些内置组件来避免用户设置的密码等级不足的问题
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
分别代表语言配置项和当前服务端时区的配置项,我们常用的配置如下所示:
LANGUAGE_CODE 取值是英文:'en-us'或者中文:'zh-Hans';
TIME_ZONE 取值是世界时区 'UTC' 或中国时区 'Asia/Shanghai'
USE_I18N = True
项目开发完成后,可以选择向不同国家的用户提供服务,那么就需要支持国际化和本地化
USE_TZ = True
指对时区的处理方式,当设置为 True 的时候,存储到数据库的时间是世界时间 'UTC'
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
默认主键自增类型