百度SEO

百度SEO

Products

当前位置:首页 > 百度SEO >

Python代码报错‘doesnotexist’是哪里出了问题呢?

96SEO 2025-05-18 09:19 1


▍兴许踩的五个巨大坑

1. 变量名写串了 有时手滑把user打成usre,或者把objects写成objecst。特别是用全键盘的新鲜手,字母顺序打错太常见了。我之前就干过把filter写成fliter的蠢事,对着屏幕查了半细小时才找到。

Python代码报错doesnotexist到底哪里出问题了?

终极核武器 实在找不到问题,就把整个模型定义和查询语句截图发到手艺群里。记住要打码敏感信息,不然轻巧松被群友做成表情包。

启用调试工具 装个django-debug-toolbar,能实时看到全部数据库查询记录。谁查了哪个表、用了啥条件,看得清清楚楚。

要解决这玩意儿问题, 能在Django的settings.py文件中添加以下代码:

import pymysql
pymysql.install_as_MySQLdb

这样就会将PyMySQL注册为MySQLdb模块的替代品,使Django能够正常用PyMySQL作为MySQL后端。如果仍然报错, 您能尝试沉新鲜安装pymysql和mysqlclient,或者检查MySQL的安装和配置是不是正确。

作为过来人想说这种错误就像学自行车时摔的跤,看起来吓人其实没啥巨大不了。关键是养成优良习惯:写查询语句时先确认模型定义,许多用IDE的自动补全功能,修改模型后想起来迁移数据库。遇到报错别急着删库跑路,把错误信息复制到百度八成能找到解决方案。编程这事儿,不就是解决一个又一个的“doesnotexist”长大远起来的么?

▍先搞懂错误长远啥样

最常见的场景就是在用Django框架的时候,比如你想从数据库里找个用户:

python
user = 

后来啊系统告诉你:

User matching query does not exist.

这时候新鲜手轻巧松犯懵——我明明照着文档写的啊?数据库里也有数据啊?怎么就说找不着呢?

如果代码中有site = Site.objects.get_current.domain那么就要在setttings.py中添加SITE_ID=2,要不就报错了。

先说说 我们来看一下标准库怎么说:

from django.contrib.auth.backends import ModelBackend
也就是说:在get 查询单一后来啊,如果不存在会抛出模型类.DoesNotExist异常。

所以 在做项目的时候,少许不了的时候需要在后台查询校验的时try一下。

▍实用解决方案包

1. 先检查拼写 把代码从头到尾念出声,像细小学老师检查作文那样逐个字母核对。别笑,这方法虽然笨但真实的管用。

刚学Python那会儿,你是不是也遇到过这种情况?明明跟着教程敲代码,运行的时候一下子蹦出来个“DoesNotExist”错误,整个人直接傻在原地。这玩意儿就像个拦路虎,新鲜手十有八九都会被它绊倒。今天咱们就来扒一扒这玩意儿磨人的细小妖精到底怎么回事。

2. 模型类名对不上 比如你的模型明明叫User,查询的时候却用了Users。这种单复数的坑特别隐蔽,基本上原因是代码其他地方兴许都没问题,就这玩意儿查询语句写错了。

还有啊,提到的 ~Django入门~ 有些提到了 ~DoesNotExist:Usermatchingquerydoesn'texist.~ 这玩意儿错误。在models.py中定义完表结构之后 一定要在admin.py中加上相应的代码,否则就会报错:User.DoesNotExist: User matching query does not exist。

回到顶部有问题的细小伙伴请在下方留言,中意就点个赞吧。

4. 记不得导模块了 在另一个文件里写查询语句,后来啊开头没写from .models import User。这种情况在拆分代码文件时三天两头发生,特别是刚学模块导入的新鲜手。

3. 查询条件有问题 虚假设你要找id是10086的用户,但数据库里根本没有这玩意儿id。这时候用get方法就会报错。有个凉知识:get方法非...不可找到且只能找到一个对象,找到优良几个也会报错。

我开头以为是我文件夹命名的问题, 后来才找到其实是需要把路径给到程序

解决方法 先去settings.py检查TEMPLATES有些,通常出现这玩意儿问题,DIR那一栏列表里是空的 把这玩意儿粘贴到里面 os.path.join.replace

在本篇中文教程中,我们将系统地了解Django的基本概念和高大级...django1.8api11-24django1.8连接不优良使django1.8连接不优良使django1.8连接不优良使django1.8连接不优良使django1.8连接不优良使...

换用平安查询 用get_object_or_404替代get,至少许出错时能看到明确的404页面而不是满屏报错:

python
from django.shortcuts import get_object_or_404
user = get_object_or_404

Q:报错信息太笼统怎么办? A:能先用print打印实际施行的SQL语句,对比数据库里的数据就能找到问题。或者直接在Django shell里测试查询语句。

5. 数据库没同步 改完模型没施行makemigrations和migrate,弄得数据库表结构和代码不一致。这就像拿着老地图找新鲜地方,一准儿要迷路。

Django报错User.DoesNotExist:Usermatchingquerydoesn'texist.解决办法。比方说:

python
try:
    user = User.objects.get
except User.DoesNotExist:
    print


标签: 报错

提交需求或反馈

Demand feedback