Django 的配置信息

6 篇文章 0 订阅
6 篇文章 0 订阅

配置信息:

项目配置是根据实际开发需求从而对整个 Web 框架编写相关配置信息。配置信 息主要由项目的 settings.py 实现,主要配置有项目路径、密钥配置、域名访问权限、 App 列表、配置静态资源、配置模板文件、数据库配置、中间件和缓存配置。


基本配置信息:

一个简单的项目必须具备的基本配置信息有: 项目路径、密钥配置、域名访问权 限、 App 列表和中间件。

项目路径 BASE_DIR: 主要通过 os 模块读取当前项目在系统的具体路径,该代 码在创建项目时自动生成, 一般情况下无须修改。

密钥配置 SECRET_KEY: 是一个随机值,在项目创建的时候自动生成,一般情 况下无须修改。主要用于重要数据的加密处理,提高系统的安全性,避免遭到攻击者 恶意破坏。密钥主要用于用户密码、 CSRF 机制和会话 Session 等数据加密。

  • 用户密码 : Django 内 置一套用户管理系统,该系统具有用户认证和存储用户 信息等功能,在创建用户的时候,将用户密码通过密钥进行为口密处理,保证 用户的安全性。
  • CSRF 机制 : 该机制主要用于表羊提交,防止窃取网站的用户信息来制造恶意 请求。
  • 会话 Session : Session 的信息存放在 Cookies,以一串随机的字符串表示,用 于标识当前访问网站的用户身份, 记录相关用户信息。

调试模式 DEBUG : 该值为布尔类型。如果在开发调试阶段应设置为 True, 在开 发调试过程中会自动检测代码是否发生更改,根据检测结果执行是否刷新重启系统。如果项目部署上线, 应将其改为 False, 否则会泄漏系统的相关信息。
 

域名访问权限 ALLOWED HOSTS : 设 置可访 问的域名,默认值为空。 当 DEBUG 为 True 并且 ALLOWED HOSTS 为 空时,项目只允许以 localhost 或 127.0.0.1 在浏览器上访问。当 DEBUG 为 False 时, ALLOWED HOSTS 为必填项, 否则程序无法启动,如果想允许所有域名访问,可设置 ALLOW_HOSTS = [, * ,]。

App 列表 INSTALLED APPS : 告诉 Django 有哪些 App。在项目 创建时己有 admin、 auth 和 session 等配置信息,这些都是 Django 内 置的应用功能,各个功能说明如下 。

  • admin: 内置的后台 管理系统。
  • auth: 内置的用户认证系统。
  • contenttypes: 记录项目中所有 model 元数据 CDjango 的 ORM 框架) 。
  • sessions: Session 会话功能,用于标识当前访问网站的用户身份,记录相关用 户信息。
  • messages: 消息提示功能。
  • staticfiles: 查找静态资源路径。

如果在项目创建了 App,必须在 App 列表 时STALLED APPS 添加 App 名称。 将 MyDjango 项目己创建的 App 添加到 App 列表

 

静态资源

静态资源指的是网站中不会改变的文件。在一般的应用程序中,静态资源包括 CSS 文件、 JavaScript 文件以及图片等资源文件。

一个项目在开发过程中肯定需要使用 CSS 和 JavaScript 文件,这些静态文件的存 放主要由配置文件 settings.py 设置,配置信息如下:

# 配置静态文件(如CSS,JavaScripts,Images)
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/

当项目启动时, Django 会根据静态资源存放路径去查找相关的资源文件,查找功能 主要由 App 列表 INSTALLED APPS 的 staticfiles 实现。

这里打个比方,在 index 中添加文件夹 static 并在文件夹放置图片,如图所示:

启动项目程序后,在浏览器上访问http://127.0.0.1:8000/static/Default.jpg,可 以看到图片展现在浏览器中。如果将 static 文件夹放置在 MyDjango 的根目录下,在 浏览器上会显示 404 无法访问的异常信息。

如果想在 MyDjango 的根目 录下存放静态资源,可以在配置文件 settings.py 中设 置 STATICFILES DIRS 属性。

配置属性 STATIC_URL 和 STATICFILES_DIRS 的区别:

  • STATIC_URL 是必须配置的属性而且属性值不能为空。如果没有自己置 STATICFILES_DIRS,则 STATIC_URL 只能识别 App 里的static 静态资源文件夹。
  • STATICFILES_DIRS是可选自己置属性,属性值为列表或元纽格式,每个列表(元组)元素代表一个静态资源文件夹,这些文件夹可自行命名 。
  • 在浏览器上访问项目的静态资源时,无论项目的静态资源文件夹是如何命名的,在浏览器上,静态资源的上级目录必须为 static,而 static 是 STATIC_URL 的属性值,因为 STATIC URL 也是静态资源的起始 URL。

除此之外,静态资源配置还有 STATIC ROOT,其作用是方便在服务器上部署 项目,实现服务器和项目之间的映射。 STATIC ROOT 主要收集整个项目的静态资源 并存放在一个新的文件夹,然后由该文件夹与服务器之间构建映射关系。 

 

模板路径:

在 Web 开发中,模板是一种较为特殊的 HTML 文档。这个 HTML 文档嵌入了 一些能够让 Python 识别的变量和指令,然后程序解析这些变量和指令, 生成完整的 HTML 网页并返回给用户浏览。模板是 Django 里面的 MTV 框架模式的 T 部分, 配 置模板路径是告诉Django。 在解析模板时, 如何找到模板所在的位置。创建项目时, Django 己有初始的模板配置信息, 如下所示:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(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',
            ],
        },
    },
]

模板配置是以列表格式呈现的,每个元素具有不同的含义,其含义说明如下:

  • BACKEND: 定义模板引擎,用 于识别模板里面的变量和指令。 内置的模板 引 擎有 Django Templates 和jinja2.Jinja2, 每个模板引擎都有自己的变量和指 令语法。
     
  • DIRS: 设置模板所在路径,告诉 Djang。在哪个地方查找模板的位置,默认 为空列表。
     
  • APP DIRS: 是否在 App 里查找模板文件。
     
  • OPTIONS: 用于填充在 RequestContext 中上下文的调用函数,一般情况下不 做任何修改。
     

数据库配置

数据库配置是选择项目所使用的数据库的类型, 不同的数据库需要设置不同 的 数据库引擎, 数据库引擎用于实现项目与数据库的连接, Django 提供 4 种数据库引擎:
如果需要连接MySQL数据库, 首先安装 MySQL 连接模块, 由于 mysqldb 不支持 Python 3, 因此 Django 2.0 不再使用 mysqldb 作为 MySQL 的连接模块, 而选择了 mysqlclient 模块, 两者之间在使用上并没有太大的差异。

在配置 MySQL 之前, 首先安装 mysqlclient 模块, 这里以 pip 安装方法为例,打 开 CMD 窗口并输入安装指令 pip install mysqlclient, 等待模板安装完成。然后检测 mysqlclient 的版本信息,如果 mysqlclient版本信息过低, 就不符合 Django 的使用要求。 在 CMD 窗 口进入 Python 交互解释器进行版本验证。

pip install mysqlclient
>>> import MySQLdb
>>> MySQLdb.__version__
'1.4.4'

完成 mysqlclient 模块的安装后,在项 目的配置文件 settings.py 中配置 MySQL 数 据库连接信息, 代码如下:
 

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django_db',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

上述连接方式用于连接 MySQL 里面一个名为司jango_db 的数据库,上述配置只 是连接了一个django_db 数据库。在日常的开发中 , 有时候需要连接多个数据库, 实现方法如下:

DATABASES = {
    # 第一个数据库
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django_db',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
    # 第二个数据库
    'MyDjango': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'MyDjango_db',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
    # 第三个数据库
    'my_sqlite3':{
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'sqlite3')
    }
}

上述 代 码共连接三个数据库, 分 别 是 django_db、 MyDjango_db 和 Sqlite30 django_db 和 MyDjango_db 均属于 MySQL 数据库系统, Sqlite3 属于 Sqlite3 数据库系 统。从属性 DATABASES 的数据类型可 以发现是一个 Python 的数据字典,也就是说 如果需要连接多个数据库,只要在属性 DATABASES 中设置不同的键值对即可实现。
 

中间件

中间件 (Middleware) 是处理 Django 的 requestresponse 对象的钩子。当用户 在网站中进行单击某个按钮等操作时, 这个动作是用户向网站发送请求 (request) ; 而网页会根据用户的操作返回相关的网页内容, 这个过程称为响应处理 (response) 。 从请求到响应的过程中 django 接收到用户请求时, Django 首先经过中间件处理 请求信息, 执行相关的处理, 然后将处理结果返回给用户 , 中间件执行流程如 图 所示。

中间件执行流程


从上图可以看出,中间件的作用主要是处理用户请求信息。开发者也可以根据自己的开发需求自定义中间件,只要将自定义的中间件添加到配置属性MIDDLEWARE中即可激活。一般情况下, Django 默认的中间件配置均可满足大部 分的开发需求。

这里举个例子,在项目的MIDDLEWARE中添加LocaleMiddleware中间件,使得 Django 内置的功能支持中文显示, 代码如下:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    # 使用中文
    'django.middleware.locale.LocaleMiddleware'
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

配置属性MIDDLEWARE的数据格式为列表类型,每个中间件的设置顺序是固 定的,如果随意变更中间件很容易导致程序异常。每个中间件的说明如下:

  • SecurityMiddleware: 内置的安全机制,保护用户与网站的通信安全。
  • SessionMiddleware: 会话 Session 功能。
  • LocaleMiddleware: 支持中文语言 。
  • CommonMiddleware: 处理请求信息,规范化请求内容。
  • CsrfViewMiddleware: 开后 CSRF 防护功能。
  • AuthenticationMiddleware: 开启内置的用户认证系统。
  • MessageMiddleware: 开启内 置的信息提示功能。
  • XFrameOptionsMiddleware: 防止恶意程序点击劫持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值