Django笔记三十九之settings配置介绍

科技资讯 投稿 22300 0 评论

Django笔记三十九之settings配置介绍

原文链接:Django笔记三十九之settings配置介绍

以下是本篇笔记目录:

    邮箱配置
  1. 允许访问地址配置
  2. 数据库配置
  3. 调试模式配置
  4. 注册应用程序配置
  5. 时区时间配置
  6. 会话配置
  7. 其他配置

1、邮箱配置

ADMINS。

这个参数是一个列表,每个元素也是一个元组或列表,第一个参数为收件人的名称,第二个为收件人邮箱:

ADMINS = [
    ("Hunter", "120460xxx@qq.com",
]

2、允许访问地址配置

我们的系统是可以设置允许访问的地址的,可以设置域名或者 IP,比如:

ALLOWED_HOSTS = ["192.168.1.9"]

这个参数的默认值为空列表,则说明只允许该系统所在的服务器地址的其他服务可以访问到 Django 服务。

ALLOWED_HOSTS = ["*"]

3、数据库配置

前面连接数据库的时候,没有做过多的介绍,都是直接使用,这里再做一下详细的介绍,以下是一个示例:

DATABASES = {
    'default': {
        'ENGINE': "django.db.backends.mysql",
        "HOST": "192.168.1.31",
        'NAME': "func_test",
        "USER": "root",
        "PASSWORD": "123456",
        "PORT": 3306,
        "OPTIONS": {},
        "TEST": {},
    },
}

在 DATABASES 中,必须设置一个 default 数据库,也可以在里面添加其他数据库连接,比如之前的多数据库连接操作的笔记示例

ENGINE 表示连接的数据库类型,这里我们设置的是 MySQL,也可以设置成 postgresql,oracle,sqlite3。

HOST 表示连接数据库的主机

NAME 表示要使用的数据库名称,比如我们这里 MySQL 的 func_test。如果使用的是 SQLite,那么这个地址应该是一个完整路径,下面是一个使用 SQLite 作为数据库的示例:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': '/Users/hunter/…/sqlite3.db'
    }
}

USER 表示的是连接 MySQL 用到的用户名

PASSWORD 则是密码

PORT MySQL 一般是 3306,如果是映射的其他端口改成其他端口即可

CONN_MAX_AGE

如果设置为 60,那么数据库连接在开启之后 60s 即关闭此连接,在此期间,其他请求可以复用此连接。

OPTIONS

是用于添加连接数据库时额外的参数,比如我们的 MySQL 的连接配置不直接在 DATABASES 中定义,而是通过配置文件的方式使用,如下官方文档的一个使用示例:

# settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS': {
            'read_default_file': '/path/to/my.cnf',
        },
    }
}


# my.cnf
[client]
database = NAME
user = USER
password = PASSWORD
default-character-set = utf8

这里的意思是,DATABASES 里的 default 数据库连接使用的都是 my.cnf 里的配置选项

是以 OPTIONS 里的参数为准,这里默认的读取配置顺序是 OPTIONS > NAME, USER, PASSWORD, HOST, PORT

* 'read uncommitted' 读未提交
* 'read committed' 读已提交
* 'repeatable read' 可重复读
* 'serializable' 串行化

TEST

TEST 参数默认也是一个空 dict,之前在单元测试那篇笔记中有过介绍,可以设置测试数据库的字符集编码,指定测试数据库名称等信息,示例如下:

DATABASES = {
    'default': {
        ...
        "TEST": {
            "CHARSET": "utf8",
            "NAME": "test_default_db",
        },
    }
}

4、调试模式配置

我们通过 settings 中的 DEBUG 参数来控制 Django 系统是否处于调试模式,DEBUG=True 则表示系统处于调试模式。

注意:永远不要在 DEBUG=True 的情况下将网站部署到生产环境

5、注册应用程序配置

INSTALLED_APPS,列表参数,元素是在这个 Django 系统中被启用的应用程序。

也包含我们创建的 application,比如我们创建了一个名为 blog 的 application,就可以在其中添加 'blog.apps.BlogConfig' 才可以被系统检测到

6、时区时间配置

TIME_ZONE 表示是时区,USE_TZ 表示是否默认是使用时区感知

import datetime
print(datetime.datetime.now(

from django.utils import timezone
print(timezone.now(

如果设置 USE_TZ = True,不管 TIME_ZONE 设置的时区是哪个,timezone.now( 输出的永远是 UTC 时间,也就是格林威治时间,也就是比我们现在要早八个小时的时间

但是我们存储到数据库的时间是使用 timezone 的时间的,所以这个设置不太对的。

# settings.py

TIME_ZONE = "Asia/Shanghai"
USE_TZ = False


import datetime
from django.utils import timezone
print(datetime.datetime.now(
print(timezone.now(

# 2023-02-26 22:33:00.442966
# 2023-02-26 22:33:00.442982

7、会话配置

session 相关的配置在第三十二篇笔记的时候有过详细介绍,这里只做一个索引介绍

用于会话的 cookie 的名称,默认为 sessionid,可在 settings.py 中自定义修改

SESSION_ENGINE

我们还在缓存那篇笔记中有过介绍如何将 session 存储到 Redis 缓存中,这里不重复介绍了。

8、其他配置

这里介绍一下如何访问 settings 中的配置,可以通过文件路径的形式访问,也可以通过 django.conf 访问:

from hunter import settings
print(settings.DATABASES

from django.conf import settings
print(settings.DATABASES

这里,hunter 为我们系统的名称,所以在系统根目录下,hunter/ 也是 settings.py 文件的上层文件夹。
如果想获取更多后端相关文章,可扫码关注阅读:

编程笔记 » Django笔记三十九之settings配置介绍

赞同 (104) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽