Django开发过程中的一些bug及解决方法

2023-11-18

在使用django开发一个交易平台的过程中,遇到各种各样的问题,其中有比较复杂的问题也有疏忽导致的比较简单的bug,记录下来,希望有所帮助。

错误:

   "A model can't have more than one AutoField."
AssertionError: A model can't have more than one AutoField.

删除重复AUTO_ID后解决。

manage.py makemigrations BookTrade
Migrations for ‘BookTrade’:
BookTrade\migrations\0001_initial.py:
- Create model BOOK
- Create model TRADE
- Create model USR
- Add field BuyerId to trade
- Add field Owner to book

manage.py migrate BookTrade
Operations to perform:
Apply all migrations: BookTrade
Running migrations:
Applying BookTrade.0001_initial… OK

错误:

TypeError at /regist/
render() takes at least 2 arguments (1 given)

解决方法:传一个空字典,或选择HttpResponse:

错误:

TemplateDoesNotExist at /regist/
{'key': 15340}

解决:

return render(request,'Regist.html',stk)

原因参数错误。

错误

RuntimeError at /regist
You called this URL via POST, but the URL doesn't end in a slash and you have APPEND_SLASH set. Django can't redirect to the slash URL while maintaining POST data. Change your form to point to 127.0.0.1:3000/regist/ (note the trailing slash), or set APPEND_SLASH=False in your Django settings.

原因:url结尾未加/

错误:

Forbidden (403)
CSRF verification failed. Request aborted.

解决:
Form中添加 {% csrf_token %}

错误:

TypeError at /regist/
'Telphone' is an invalid keyword argument for this function

解决:拼写问题,应为TelPhone

错误:

Variable    Value
args    ("'fdsf'", '416816', "'dfs'", "'dfsfas@qq.com'", "'146161'")
db  <_mysql.connection open to 'localhost' at 4228fc0>
exc <class '_mysql_exceptions.OperationalError'>
query   "INSERT INTO `BookTrade_usr` (`Name`, `StuId`, `PassWord`, `Email`, `TelPhone`) 
VALUES ('fdsf', 416816, 'dfs', 'dfsfas@qq.com', '146161')"
res None
self    <MySQLdb.cursors.Cursor object at 0x04333470>
value   OperationalError(1054, "Unknown column 'TelPhone' in 'field list'")

原因:models有改动,未同步数据库
解决:

manage.py makemigrations BookTrade
Did you rename usr.TlePhone to usr.TelPhone (a CharField)? [y/N] y
Migrations for 'BookTrade':
  BookTrade\migrations\0002_auto_20170404_1742.py:
- Rename field TlePhone on usr to TelPhone
manage.py migrate BookTrade
Operations to perform:
  Apply all migrations: BookTrade
Running migrations:
  Applying BookTrade.0002_auto_20170404_1742... OK

错误:

UnicodeDecodeError at /login/
'utf8' codec can't decode byte 0xbb in position 74: invalid start byte

原因:
views文件的默认编码为gb2312,导致错误。
解决方法: rsp[‘error’] = ‘账号或密码错误’.decode(‘gb2312’).encode(‘utf-8’) 或者改变views.py文件编码,这里选择第二种。

错误:

AttributeError at /login/
'QuerySet' object has no attribute 'Name'

原因:
QuerySet 是一個 Set。
改为: rsp[‘usrname’] = test.all()[0].Name
get方法是只返回一个,filter是返回一个或多个,两个都是在没有的情况下返回错误DoesNotExists。但是get由于只返回一个,如果有多个匹配的则返回MultipleObjectsReturned。并且在对于get方法,有一个快捷方法就是get_object_or_404,如果object不存在就会自动返回404;同样对于filter有对应的是get_list_or_404。

错误:

TypeError at /sale/
add() takes exactly 1 argument (2 given)

错误代码:

url(r'^(add|sale)/$',views.add),

错误原因:
不支持多个URL映射?

错误:

MultiValueDictKeyError at /sale/
"'bookpublish'"

原因:不存在的post_keyname

错误:

TypeError at /sale/
create() takes exactly 1 argument (2 given)

原因:参数错误

错误:

AttributeError at /sale/
'dict' object has no attribute 'Owner'

原因:Owner为USR的外键,应传入usrid

错误:

ValueError at /sale/
Cannot assign "5": "BOOK.Owner" must be a "USR" instance.

解决方法:
• 普通数据项:直接插入
• 外键数据项:先获取要插入的外键(对象),然后和普通键一起插入
• 多对多数据项:获取要插入的多对多数据项,待表中普通数据项和外键数据项save后,使用.add方法加入

BOOK.objects.create(Owner = test.all()[0], BookName = data['BookName'], BookAuthor = data['BookAuthor'], BookPublish = data['BookPublish'], BookBrief = data['BookBrief'],)

错误:

TypeError at /regist/
'UsrId' is an invalid keyword argument for this function

原因:拼写错误,应为UsrID

错误:

AttributeError at /regist/
'MultiValueDict' object has no attribute '_committed'

错误代码:usrimg = request.FILES
解决:usrimg = request.FILES.get('img')

错误:

<img src="{{ usrimg }}" style="height:50px; width:50px;"/>

图片不显示
解决:

<img src="/media/{{ usrimg }}" style="height:50px; width:50px;"/>

注意:

from django.conf.urls.static import static

urlpatterns = [
    url(r'^admin/', admin.site.urls),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

错误:

TYPEERROR: In order to allow non-dict objects to be serialized set the safe parmeter to False 

错误代码:

return JsonResponse(rsp)

更正:

return JsonResponse(rsp, safe=False)

增加safe=false,使其接受列表。

错误:

TypeError: <ImageFieldFile: None> is not JSON serializable

错误原因:responseJSON不接受对象,而查询到的ImgField是一个Field对象
解决:使用str()将Field转成字符型。

错误:

DisallowedHost at /main
Invalid HTTP_HOST header: '121.49.127.140:3000'. You may need to add u'121.49.127.140' to ALLOWED_HOSTS

解决:在settings.py中添加:

ALLOWED_HOSTS = ['121.49.127.140',
]

异常:

manage.py makemigrations BookTrade
You are trying to add a non-nullable field ‘BookPrice’ to book without a default; we can’t do that (the database needs something to populate existing rows).
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows with a null value for this column)
2) Quit, and let me add a default in models.py
Select an option:
原因:这是因为修改模型后没有添加default值。

TypeError at /book/sale/
‘WeChat’ is an invalid keyword argument for this function
原因:数据模型中不存在的键,一般是因为拼写错误。

IndexError at /book/details/
list index out of range
第1种可能情况
list[index]index超出范围
第2种可能情况
list是一个空的 没有一个元素
进行list[0]就会出现该错误

错误:

AttributeError: ‘BOOK’ object has no attribute ‘update’

原因:
在调用models的方法时未加objects

错误:
Manager isn’t accessible via BOOK instances
原因:
Managers只能通过model class来访问,而不能通过model的实例化对象来访问,这主要是为了区分表级与记录级的操作。
对model来说,Manager管理器是产生QuerSet的主要方式,如Blog.objects.all()返回数据库中包含所有Blog对象的一组QuerySet。

更改:

      #  book.objects.update(Lock = False)
         BOOK.objects.filter(BookId = book.BookId).update(Lock = False)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django开发过程中的一些bug及解决方法 的相关文章

随机推荐

  • python可视化——matplotlib画图颜色控制

    这里cd整理了python中matplotlib库中color可用的颜色 之前有人整理的是图片版 实际用的时候不怎么方便 因策这里整理了表格 颜色可以选择 方便使用 关于matplotlib中颜色的使用 有很多方式 1 用RGB或者RGBA
  • 给 MSYS2 添加中科大的源

    最近一段时间不知怎么的 使用默认的 MSYS2 源升级软件或是安装新软件的特别的慢 所以就翻了翻国内的几个开源软件的镜像库 发现中科大的库里就有 MSYS2 所以就研究了一下 给 MSYS2 添加了中科大的源 简单的说 msys64 etc
  • 领域驱动设计:DDD重构中台业务模型

    文章目录 如何避免重复造轮子 如何构建中台业务模型 如何避免重复造轮子 要避免重复建设 就要理解中台的理念和思想 中台是企业级能力复用平台 复用 用白话说就是重复使用 就是要避免重复造轮子的事情 中台的设计思想与 高内聚 低耦合 的设计原则
  • Oracle入门笔记(四)——Oracle表约束和表间关系

    Oracle表约束和表间关系 1 Oracle数据表要求 2 Oracle数据表约束 3表间关系 3 1一对一关系 3 1一对多关系 3 1多对多关系 1 Oracle数据表要求 1 必须以字母开头 2 长度不能超过30字符 3 避免使用关
  • 软件测试项目管理系统(STM)

    1 产品介绍 凯云软件测试项目管理系统 Software Testing Management System 简称 STM 是为企业软件测试部门以及第三方软件测试机构打造的统一工作平台 该系统提供规范的测试流程 支持被测件接收 测试需求分析
  • 若依RuoYi-Vue代码学习一---若依如何基于OncePerRequestFilter【Spring Security的过滤器】验证的token与用户信息

    文章目录 一 通过token获取用户信息 二 验证token过期 一 通过token获取用户信息 代码位置 com ruoyi framework security filter JwtAuthenticationTokenFilter 直
  • https://isux.tencent.com/svg-animate.html(svg动画)

    初学SVG的时候 感觉那一坨一坨的代码难读难懂 现在回过头仔细想想 是因为那时候看文档缺少一些具体的实例 导致学习起来很枯燥 如今SVG已经在前端各个领域都有所作为 无论是项目里的应用还是demo都所处可见 这里我就用一个实例的写法带新同学
  • Android 上传头像功能第三方框架Boxing与TakePhoto使用总结

    刚做了个人中心的上传头像功能 就来总结一下做的过程 一开始就直接去github上找一个第三方框架接入 省点事 先是听了朋友的推荐去看了一下bilibili开源的一款Boxing的框架 但是使用起来发现不太符合我的需求 最后还是使用TakeP
  • 【学习排序】 Learning to Rank 中Listwise关于ListNet算法讲解及实现

    前一篇文章 Learning to Rank中Pointwise关于PRank算法源码实现 讲述了基于点的学习排序PRank算法的实现 该篇文章主要讲述Listwise Approach和基于神经网络的ListNet算法及Java实现 包括
  • inno setup打包软件学习

    目录 一 打包结果 二 示例打包脚本 三 错误解决 3 1 另一个程序正在使用此文件 进程无法访问 3 2 桌面图标无法修改 四 参考资料 一 打包结果 测试程序来自 泽森科工 zenustech com 二 示例打包脚本 使用打包软件下载
  • SVN服务器权限设置

    1 authz文件内容 groups admin xiaoming team1 zhangsan admin rw admin具有svnRepos根目录下所有文件的读写权限 组别为team1的人员具有projectname目录下所有文件的读
  • Java并发编程学习1-并发简介

    Java并发编程学习系列 Java并发编程学习 简介 线程的优势 发挥多处理器的强大能力 建模的简单性 异步事件的简化处理 响应更灵敏的用户界面 线程的风险 安全性问题 活跃性问题 性能问题 结语 简介 在早期的计算机中不包含操作系统 它们
  • 钩子函数介绍和总结

    Author 快来救救我 ps 快乐废宅 文章目录 前言 一 钩子函数 Hook 是什么 理解 特点 举例 钩子类型 钩子程序组成部分 钩子操作流程 钩子函数的回调函数 最后 三 参考文章 前言 我看了其他博客有些对钩子函数讲述的篇幅要不太
  • IBM Worklight开发环境安装

    1 安装jdk1 6以上版本 2 下载安装mysql http ftp iij ad jp pub db mysql Downloads MySQL 5 1 mysql noinstall 5 1 62 win32 zip 3 下载mysq
  • 成为黑客第一步:从这五本书开始

    如果您想学习黑客并成为道德黑客 那么这些最好的黑客书籍将带你走上正轨 学习黑客 如果你是一个完整的初学者 并不是一件容易的事 虽然网上有很多资源 但是黑客资源往往很少 因此阅读书籍通常很有帮助 黑客可能会被不道德地使用 还可能对个人和公司造
  • 当HDF5需要重新创建大量group和dataset但是又提示原来的group已经存在怎么办

    描述 我在创建tff数据集的时候 程序里面有循环写到hdf5需要根据某类名字创建group dataset 但是我有的时候会发现这段代码有问题 我需要修改一下循环里面的某些东西然后再重新run 这个时候会提示创建的group或者datase
  • C++ 去掉字符串前后的空格

    基本思路 先去掉字符串头部的空格 再去掉字符串尾部的空格 实现方式一 include
  • ICLR 2023高分论文!ToMe:你的视觉Transformer可以更快!

    点击下方卡片 关注 CVer 公众号 AI CV重磅干货 第一时间送达 点击进入 gt CV微信技术交流群 转载自 极市平台 作者 科技猛兽 导读 这篇文章提出了一种无需训练即可加速 ViT 模型 提高吞吐量的方法 Token Mergin
  • C语言static和extern关键字

    1 static static修饰的变量 自始至终只有一块空间 当前文件才能使用 生命周期是从定义开始直到程序结束 全局变量的定义是在 c文件中 但是声明全局变量是在 h中 static 静态型 用它定义的变量自动初始化为0值或空值 常用于
  • Django开发过程中的一些bug及解决方法

    在使用django开发一个交易平台的过程中 遇到各种各样的问题 其中有比较复杂的问题也有疏忽导致的比较简单的bug 记录下来 希望有所帮助 错误 A model can t have more than one AutoField Asse