Skip to content

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密码
        }
    }
}