Django异常报错持续记录,欢迎提供问题
Posted 我辈李想
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django异常报错持续记录,欢迎提供问题相关的知识,希望对你有一定的参考价值。
文章目录
- 前言
- 一、Model class m.m doesn‘t declare an explicit app_label and isn‘t in INSTALLED_APPS
- 二、django报错django.db.utils.InterfaceError:(0,'')
- 总结
前言
虽然我们已经很小心,但是django在日常使用中还是会出现一些问题,总是有一些报错是少部分人碰到的,而且都不是很好处理。本篇博客是一个记录,也作为收集,愿我们共同进步。
一、Model class m.m doesn‘t declare an explicit app_label and isn‘t in INSTALLED_APPS
项目场景:
此问题区分具体场景,多发生在views.py通过import导入app的models.py文件。
问题描述
这个报错具体原因不是报错提示的原因,而是我们import导入时报的错误,错误原因指向INSTALLED_APPS,注意,其实这时我们INSTALLED_APPS是正常的。
原因分析:
djnago项目app下的apps.py文件配置问题,可能是移动app造成的。
解决方案:
# settings的INSTALLED_APPS
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.gis', # 新增
'rest_framework',
'corsheaders',
'geoserver.apps.GeoserverConfig',
'users.apps.UsersConfig',
]
# apps.py文件
from django.apps import AppConfig
class UsersConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'users'
# models.py文件导入
from geoserver.models import SarLayer
二、django报错django.db.utils.InterfaceError:(0,‘’)
项目场景:
在使用django的models类进行增删改查时,可能意外触发,一般情况下如果触发,后续数据库操作均无效。
问题描述
如果程序做了异常处理,收到的报错信息将是(0,‘’),如果后端报错将是django.db.utils.InterfaceError:(0,‘’)。
原因分析:
mysql、oracle数据库均可能触发这个问题,django默认的sqlite3没有这个问题。主要是数据库连接超过8小时将自动断开,后续通过这个链接的均无法使用。
解决方案:
网络上基本有3种方式:
第一种:因为长时间没有使用连接池里的连接,导致一部分连接已经失效,因此手动清理一下老旧的连接即可。
import django.db
django.db.close_old_connections()
print(list(django.contrib.auth.models.User.objects.all()))
第二种:
from django.db import transaction
class Command(BaseCommand):
help = "Check order"
def add_arguments(self, parser):
parser.add_argument("--order-no", nargs="?", type=str)
def handle(self, *args, **options):
with transaction.atomic():
order = Orders.objects.get(order_no=options["order_no"])
print(order)
第三种:
self.db = pymysql.connect('ip', 'user', 'password', 'database', charset='utf8')
self.cur = self.db.cursor()
sel = 'SELECT title FROM dj_news WHERE type=1 ORDER BY id DESC LIMIT 200'
self.db.ping(reconnect=True) # 检查连接是否存在,断开的话重连
self.cur.execute(sel)
总结
通过整理这些bug,总有能够帮到你我他,或者提供一些灵感。
Django框架,查询多条记录报错
#出错代码及报错信息:
主要是因为获取的查询集是多个对象,需要设置many=TRUE, safe =False 如下:
以上是关于Django异常报错持续记录,欢迎提供问题的主要内容,如果未能解决你的问题,请参考以下文章