数据库兼容问题
数据库驱动:
安装:pip install pymysql
__init__.py
import pymysql
pymysql.install_as_MySQLdb()
pymysql.version_info = (1, 4, 13, "final", 0)
setting.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': "test_platform",
"USER":"root",
"PASSWORD":"root",
"HOST":"111.229.54.5",
"PORT":3306,
"TEST":{
"CHARSET":"utf8",
"COLLATION":"utf8_general_ci"
}
}
}
版本判断问题:
套接字编码问题:
python3和Python2在套接字返回值解码上的区别
python2是用decode,python3是用encode,而下载的默认文件里面是decode
解决方案:
E:\install\python3.7\Lib\site-packages\django\db\backends\mysql\operations.py
改成下面这段代码
if query is not None:
if type(query) == byte:
query = query.decode(errors='replace')
elif type(query) == str:
query = query.encode(errors='replace')
else:
query = force_text(query,errors='replace')
时区问题解决方案
问题描述:
model自动生成的create_time时间不准
问题原因:
django默认格林威治时间,所以要改成中国时区得修改默认配置,如下:
解决方案:
settings.py将时区相关变量改成下面这些
# 语言
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans'
# 时区
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False
跨域解决方案
安装
pip install django-cors-headers
setting配置
# 加入跨域包
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'corsheaders' # 引入第三方库
]
# 中间件
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
# 跨域设置(必须在django.middleware.csrf.CsrfViewMiddleware的上面)
'corsheaders.middleware.CorsMiddleware',# 这个是新增的
'django.middleware.common.CommonMiddleware',
# csrf攻击跳过(前后端分离不需要做)
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
# 跨域忽略
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
# 允许跨域请求的白名单
# CORS_ORIGIN_WHITELIST = (
# '*'
# )
CORS_ALLOW_METHODS = (
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
'VIEW',
)
CORS_ALLOW_HEADERS = (
'XMLHttpRequest',
'X_FILENAME',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
'Pragma',
)
注意跨域白名单!!!
CORS_ORIGIN_WHITELIST
错误代码(版本小于3.0需要这样写)
修改代码(版本大于3.0需要这样写):