other
常见配置
时区、语言配置
python
# 语言更改为汉语
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans'
# TIME_ZONE = 'UTC'
# datetime.datetime.now() - 东八区时间 / datetime.datetime.utcnow() => utc时间
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
# 影响自动生成数据库时间字段;
# USE_TZ = True,创建UTC时间写入到数据库。
# USE_TZ = False,根据TIME_ZONE设置的时区进行创建时间并写入数据库
# USE_TZ = True
USE_TZ = False
数据库配置
sqlite3配置
直接配置好这个配置,当你执行完数据库迁移命令之后,项目根目录下自动就有了一个db.sqlite3
这样一个数据库文件。
python
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
MySQL配置
关于mysqlclient和pymysql到底在项目中用哪个来连接MySQL
关于这个问题,你就记住我说的话就完了。
- mysqlclient和pymysql都可以用来连接MySQL,且用前都需要下载:
bash
# 下面两个命令二选一,不要都下载了
pip install mysqlclient
pip install pymysql
- 优先推荐下载mysqlclient,然后下载完之后,其他的不用做任何配置,直接在settings.py中配置好数据库连接的配置项,执行完数据库迁移,就可以正常的使用了orm操作数据库了。
- mysqlclient的优点是下载了就能用,非常方便。
- 但缺陷也不得不忽视,那就是有的系统(windows/mac/linux)要么安装就能使用,要么就是pip安装时就报错,要么就是安装完不能用!经过我无数次的处理这个问题,得出来的经验,解决这个报错,性价比不高,可能花费大量的时间,到最后也没解决掉!最终不得不改用pymysql了.....
- 所以,对于只要是mysqlclient的相关报错问题,我最终的方案就是一律不解决了,直接改用pymysql,不跟它耗着了,当然,谁要是有比较简单的解决方案,可以告诉我!我也学一招!!
- 对于mysqlclient报错的同学,改用pymysql的话, 就是在你下载完了pymysql模块之后,需要在项目的
settings.py
文件的同级目录中找到__init__.py
文件,在这个文件中填写下面两行代码,然后就可以正常使用了:
python
import pymysql
pymysql.install_as_MySQLdb()
拿来就用的基础配置
settings.py
:
python
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'supplier', # 你的数据库名称
'USER': 'zhangkai', # 你的数据库用户名
'PASSWORD': '123', # 你的数据库密码
'HOST': "127.0.0.1", # 你的数据库主机,留空默认为localhost
'PORT': '3306', # 你的数据库端口
}
}
带连接池的配置
需要下载模块:
bash
pip install django-db-connection-pool
settings.py
:
python
DATABASES = {
"default": {
'ENGINE': 'dj_db_conn_pool.backends.mysql',
'NAME': 'order_api', # 数据库名字
'USER': 'root',
'PASSWORD': '123',
'HOST': '127.0.0.1', # ip
'PORT': 3306,
'POOL_OPTIONS': {
'POOL_SIZE': 50, # 连接池中默认的连接数
'MAX_OVERFLOW': 50, # 在最小的基础上,还可以增加50个,即:最大100个。如果开发中报连接超时的错误,那是因为连接池中的连接用完了,你需要根据业务情况,继续调整连接数
'RECYCLE': 24 * 60 * 60, # 连接可以被重复用多久,超过会重新创建,-1表示永久。
'TIMEOUT': 30, # 池中没有连接最多等待的时间。
}
}
}
sqlite3配置
settings.py
:
python
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
redis配置
settings.py
:
python
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379", # 安装redis的主机的 IP 和 端口
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"CONNECTION_POOL_KWARGS": {
"max_connections": 1000,
"encoding": 'utf-8',
"decode_responses": True,
},
"PASSWORD": "1234" # redis密码
}
}
}