Products
96SEO 2025-05-18 09:19 1
1. 变量名写串了 有时手滑把user打成usre,或者把objects写成objecst。特别是用全键盘的新鲜手,字母顺序打错太常见了。我之前就干过把filter写成fliter的蠢事,对着屏幕查了半细小时才找到。
终极核武器 实在找不到问题,就把整个模型定义和查询语句截图发到手艺群里。记住要打码敏感信息,不然轻巧松被群友做成表情包。
启用调试工具 装个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