Django开发中问题和报错集合
记录django项目开发过程中的遇到的问题,导致原因和已经奏效的解决方法
常见报错UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xbc in position 852: invalid start byte
这个问题在一些电脑上做django开发时经常出现
要么是py文件运行是就报这个类似的无法解码的问题,要么就是运行服务器后台添加数据保存时报这个错误
现总结了以下一些可能的原因和解决方法:
可能的原因:
- 1.GBK编码的文件(不一定是py文件)中输入了的汉字与django运行时的解码方式utf-8不一致;
- 2.在文件开头加上
# -*- coding:utf-8 -*-
,这个方法只对单个文件有效,而且加过一次后再去掉也仍然奏效 - 3.电脑命名出现了汉字(在设置中修改成英文即可,这是能搜索到的普遍的解答)
解决方法:
- 要么删除汉字,要么修改转换一下编码方式将原文件覆盖→用pycharm右下角的编码转换功能修改
上述编码错误还可能导致搜索功能的作用失效
使用python的全文检索框架帮助搜词时无法匹配到目标对象(你传入的page对象到模板中始终为空),这可能是因为分词txt文件出现了上述的编码冲突:
比如:templates/indexes/app1目录下的Model_text.txt的出现了汉字(注释也算)与django用的utf-8冲突
解决方法就是前面所说的修改编码方式为utf-8并重新加载文件
终端执行命令(如迁移python manage.py makemigrations)时报错:RuntimeError: Model class apps.xxx.xxx.XXXdoesn’t declare an explicit app_label and isn’t in an application in INSTALLED_APPS.
可能的原因:
- 检查models里面的外键关联对象名称是否有错,关联的对象名称格式应该是【app名.类名】(中间没有models.py文件名)
解决方法:
- 如上原因所示,关联的对象名称格式应该是【app名.类名】
执行迁移命令python manage.py makemigrations时报错
1.django.db.utils.OperationalError: (2003, “Can’t connect to MySQL server on ‘1xx.xx.xx.xxx’ ([WinError 10061] 由于目标计算机积极拒绝,无法连接。)”)
可能的原因:
- 检查服务器上MySQL服务程序是否启动,(用PS指令检查程序)启动(linux):
service mysql start
- 检查MySQL是否有授予访问权利给当前发起连接的主机IP,查看授权情况:
show grants for user@1xx.xx.xx.xx
(user是你在django配置中设置的数据库登录账号),不想查看,可直接执行授权操作
解决方法:
- 授权:
GRANT ALL PRIVILEGES ON `test`.* TO 'user'@'1xx.1xx.xx.xx' IDENTIFIED BY 'password' WITH GRANT OPTION;
其中test是名为test数据库(可理解为子库?),不输入’test’则是授权所有库,后面的user、ip和password要根据实际情况输入,示例:
如果出现报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
请往下查看解决方法:
数据库指定IP主机授权时报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
原因:
- 原因是密码太短,密码安全策略要求过高
解决方法:
查看当前的密码安全策略
show variables like "%validate%";
修改密码安全策略,修改密码长度为4位:
set global validate_password_length=4;
修改安全等级为low(0):
set global validate_password_policy=0;
再次查看密码安全策略:
show variables like "%validate%";
再次对指定的IP主机授权:
GRANT ALL PRIVILEGES ON `test`.* TO 'user'@'1xx.1xx.xx.xx' IDENTIFIED BY 'password' WITH GRANT OPTION;
返回OK:
djangoValueError: Unable to configure handler ‘mail_admins’
可能的原因:
- 可能是刚刚在源码因为复制(或修改)了一些东西(复制粘贴经常会报错,可能跟编码有关)
解决方法:
- 改成手写,或者不修改源码,重启服务器
python manage.py runserver
Reverse for ‘index’ with arguments ‘(3,)’ not found. 1 pattern(s) tried: [’$’]
可能的原因:
- 反向解析的名字错误(不一定是拼写错误,可能是你指向的url的别名错误)
解决方法:
- 根据报错的路由寻找模板中错误的反向解析
SyntaxError at/xx/xx;invalid syntax Syntax(redis.py, line 815)
可能的原因:
- redis源码中有关键字与python的冲突
解决方法:
- 根据提示定位错误处,进入源码将所有该关键字替换为一个不冲突的名字
configparser.NoOptionError: No option ‘connect_timeout’ in section: ‘config’
可能的原因:
- 给出的配置文件的路径错误,使用了相对路径
解决方法: - 改成绝对路径
如何解决from user.models import User类似的红色下划波浪线报错:
将apps package标记为资源根目录,在apps目录内导入其他py文件时会从apps下开始寻找
ImportError: cannot import name ‘six’ from ‘django.utils’
原因:
- django3six单独作为了一个包,而不是存在django.utils目录下
解决方法:
方法一:直接进入虚拟环境site-packages中将安装的six.py复制到同目录下django目录下的utils目录中
方法二:将from django.utils import six的语句全都改成import six
解决上面问题之后可能会出现错误:**ImportError: cannot import name ‘python_2_unicode_compatible’**原因同上
解决方法:
- 根据提示找到出错的模块,将出错的导入低吗改为
from six import python_2_unicode_compatible
(site-pakage下的six没有删除或移动到其他位置)或from django.utils.six import python_2_unicode_compatible
(six.py移动到了django.utils目录下)
进入文件/home/image/Desktop/pyenv/fresh/lib/python3.6/site-packages/haystack/inputs.py
修改为
数据迁移常见报错之 django.db.utils.InternalError: (1060, “Duplicate column name ‘addr_id’”)
问题截图(原因):
- 迁移的外键名与数据库中的列重复,迁移过的外键更改后又执行迁移,有时候无法避免,因为修改了一些数据,其报错效果类似下图新建一个外键字段一样:
解决方法:
- 从数据库删除报错的那一栏,使用navicat找到对应表,右键进入设计表模式,找到外键执行删除 (注意栏位【删除时】要改成级联CASCADE),on_delete=CASCADE代表删除主表时,关联的外键也会删除
然后记得删除与之相关联的不需要的栏位
InternalError at /(1054, “Unknown column ‘banner_list.foreign_spu_id’ in ‘field list’”)
可能的原因:
- 增加了新的外键,但数据库表中没有这个外键栏
解决方法: - 从数据库手动增加这个外键
InternalError at /xxx/xxx/xxx(1364, “Field ‘foreign_spu_id’ doesn’t have a default value”)
原因:
- 就是外键缺一个默认值(不知为什么外键需要一个默认值,而且也并没有强制要设定这个参数)
解决方法:: - 想一个默认值,添加默认值参数(default=‘xxx’),或者给外键设置参数可以为空(null=True)
Django开发中问题和报错集合相关推荐
- java 更新ui_你怎么解决Android开发中更新UI报错的异常吗-百度经验
执行上述代码. 在App中点击"变透明"的按钮后,App就退出了. logcat中打印了这个错: 03-20 14:47:31.326 11640-11796/com.exampl ...
- 微信分享到朋友圈的链接没有图片。开发工具中正常没有报错-解决方案
重要的话说三遍 一定要保证你写的程序调用的接口,在"微信开发工具"中正常没有报错 一定要保证你写的程序调用的接口,在"微信开发工具"中正常没有报错 一定要保证你 ...
- PyCharm使用期间出现报错集合 持续更新ing
PyCharm使用期间出现报错集合 持续更新ing 啥时候用PyCharm发现了奇奇怪怪的错误就整理上来 这几天帮同学安装torch的时候出现了一些奇奇怪怪的问题 1.torch始终安装失败 描述一下 ...
- CodeLite开发Gtk 语法检查报错
CodeLite开发Gtk 语法检查报错 Unknown type name 'namespace' ,自动补全出错 问题描述 解决 问题描述 使用CodeLite创建Gtkmm C++项目,默认生成 ...
- .Net Core通过NPOI在CentOS 7(Docker)环境中导出Excel报错The type initializer for ‘Gdip‘ 的问题
一.前言 今天在AspNetCore5.0环境中做了一个导出Excel的功能,在开发机器上(windows10)调试正常,但是部署到centos7容器(容器基础环境mcr.microsoft.com/ ...
- 野火霸道开发板 STM32 keil5 报错:flash download failed-cortex M3解决方法
起因是我使用野火霸道开发板报错了,报错现象如下图 后来修改后我发现必须要在keil中修改参数如下图 需要在选择好芯片型号 设置使用DAP
- LibreOffice - LibreOffice报错集合
LibreOffice - LibreOffice报错集合 文章目录 LibreOffice - LibreOffice报错集合 前言 背景 问题描述 问题分析 解决方法 解决方法一 解决方法二 总结 ...
- 《一起学习rgbdSLAM》中g2o部分报错的问题
<一起学习rgbdSLAM>中g2o部分报错的问题 在高博的<一起学习rgbdSLAM>第六讲中使用到了g2o工具.但是由于版本问题,按照高博的写法来编写代码在编译过程中会报错 ...
- [Git] 拉开发分支的代码报错
Git拉开发分支的代码报错: fatal: The remote end hung up unexpectedly fatal: early EOF fatal: index-pack failed ...
最新文章
- 德鲁克的黄金管理20条—------中高层管理必修课
- 【操作】vue-markdown使用
- html常用标签(form标签)
- 采用Opserver来监控你的ASP.NET项目系列(二、监控SQL Server与Asp.Net项目)
- 呼吁开放外网_服装数据集:呼吁采取行动
- Taro+react开发(33) Super expression must either be null or a function, not undefined
- C库函数—strcpy实现
- 编译错误: Too much data space used by DLL's in MODULES section
- 1 Linux系统性能测试与监测工具汇总
- js中的children实时获取子元素
- 分享一款影视源码_爱客影院网站3.5.6版本
- 【Godot】行为树(一)了解与设计行为树代码
- arctanx麦克劳林公式推导过程_高中数学三角函数公式大全,竞赛高考都适用(含公式推导)...
- veu-cli 3.0使用教程
- 3600000毫秒等于多少小时,一小时等于多少毫秒
- 网络重置后WLAN网络找不到怎么办?
- TCP连接建立三握手
- 实用软件/浏览器插件/网站合集(个人向,更新中)
- 【科普】始于颜值,终于实力:五镜头倾斜相机、双镜头倾斜相机介绍
- php网站搬家怎么打包,搬家时打包衣柜的5种方法
热门文章
- 开关语句、循环语句、goto
- 圆锥曲线万能弦长公式_2020高考数学50条秒杀型公式与方法
- python 分类变量xgboost_【转】XGBoost参数调优完全指南(附Python代码)
- python pip install指定国内源镜像
- java自动注入注解_Spring自动注解标签@Autowired不能注入xml配置的bean吗?
- lisp语言cond和if套用_LISP - 决策
- 【Keras】30 秒上手 Keras+实例对mnist手写数字进行识别准确率达99%以上
- html中的url、href、src的区别
- mysql非主键索引_主键索引和非主键索引的区别
- MFC读取配置文件GetPrivateProfileString