You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django后台登录报错:'datetime.datetime'对象无split属性

解决Django Admin登录时的AttributeError: 'datetime.datetime' object has no attribute 'split'问题

Hey,我来帮你搞定这个登录报错的问题。先梳理下你的情况:你用的是Django 2.0.5,数据库引擎是mysql.connector.django,迁移已经完成,但登录Admin时触发了这个奇怪的AttributeError,错误指向datetime对象没有split方法。

问题背景

你的核心报错信息:

AttributeError at /admin/login/ 'datetime.datetime' object has no attribute 'split'
Request Method: POST
Request URL: http://localhost:8000/admin/login/?next=/admin/
Django Version: 2.0.5

已安装的核心依赖列表:

certifi==2018.4.16
Django==2.0.5
mysql-connector-python==8.0.11
mysqlclient==1.3.12
pytz==2018.4

问题根源

这个问题大概率是**mysql-connector-python 8.0.11和Django 2.0.5的兼容性冲突**。新版本的MySQL连接器在返回datetime类型数据时,直接返回了Python原生的datetime.datetime对象,但Django 2.0.x的认证/会话流程里,有部分逻辑还在假设这个值是字符串,所以调用了split()方法,导致报错。另外你同时装了mysqlclient和mysql-connector-python,也可能引发引擎调用的混淆。

可行的解决方案

方案1:降级MySQL连接器版本

把mysql-connector-python降到和Django 2.0.x兼容的版本,比如8.0.10:

# 卸载当前版本
pip uninstall mysql-connector-python -y
# 安装兼容版本
pip install mysql-connector-python==8.0.10

然后重启Django服务,再试登录Admin。

方案2:切换到mysqlclient引擎

如果降级连接器没用,试试用mysqlclient作为数据库引擎(注意:Windows需要提前装VC++编译工具,Linux要装libmysqlclient-dev依赖):

  1. 修改settings.py里的数据库配置:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 替换成mysqlclient对应的引擎
        'NAME': '你的数据库名',
        'USER': '数据库用户名',
        'PASSWORD': '数据库密码',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}
  1. 确保mysqlclient正常安装(你已经装了1.3.12,这步可以跳过):
pip install mysqlclient==1.3.12
  1. 重新跑一遍迁移(避免残留问题):
python manage.py migrate

重启服务后再尝试登录。

方案3:排查自定义代码

如果上面两个方案都不行,就得检查你自己的应用(比如picker_main)里有没有自定义模型、认证后端或者中间件错误地处理了datetime数据。可以先把picker_main从INSTALLED_APPS里移除,测试是否还会报错,逐步定位问题点。

验证方法

完成任一方案后,启动服务:

python manage.py runserver

访问http://localhost:8000/admin/login/,用管理员账号登录,确认报错是否消失。

内容的提问来源于stack exchange,提问作者XSHA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:03:10