前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Django 视图函数打印的内容不显示

Django 视图函数打印的内容不显示

作者头像
全栈测试开发日记
发布2023-02-02 17:04:32
发布2023-02-02 17:04:32
1.5K00
代码可运行
举报
运行总次数:0
代码可运行

  引言

  今天发现一个很诡异的问题,在django项目视图函数中,使用print,结果打印不出来。由于项目写了很久,查了很久的,最终还是找到根本原因了。有时候BUG就是在那个毫不起眼的角落里藏着!

  问题

从上图看视图函数请求是成功的,并没有什么毛病,但是百思不得其解,为啥会这样?

然后加一下日志再看看:

 日志可以正常显示,但是打印始终无法显示。

  踩过的坑

  而我换个项目,我其他的项目,尝试打印,是正常的。唯独这个项目不行,但是项目运行是正常的,前端操作后端返回的数据也正常。就在这一切看似正常的情况下,这个打印始终不显示,不仅仅是这个视图函数,我里面所有视图函数加了个打印功能都不显示。后面在一位大神的指点下,尝试了新建项目,重新弄一次,还是不行。最后只有一步一步注释的去找原因。结果最终还是找到原因。

  解决

  根本原因是我封装了某模块,模块里面写了两行代码引起的。

代码语言:javascript
代码运行次数:0
运行
复制
import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')

  尝试这注释后,结果就打印出来。

这是为啥呢? 这两个代码其实是改变输出方式,当我们需要打印一些字符时,并不是立刻就打印,而是先将需要打印的字符放入缓冲区,在缓冲区刷新时打印,当缓冲区未满,或者程序运行未结束时,可使用sys.stdout.flush()强制刷新缓冲区,立刻进行打印。

  总结

  这个坑我躺了差不多6个小时,有时候自己写代码的时候,一定要谨慎,并且备注一定要有,不然过了很长一段时间,你再来维护代码,你发现了bug,如果是一些奇葩的,会消耗你很多时间。虽然这看似是个小问题,但是耗了我太长时间,所以记录一下,希望能给遇到同样问题的小伙伴带来帮助。

如果对python测试开发相关技术感兴趣的伙伴,欢迎加入测试开发学习交流QQ群:696400122,不积跬步,无以至千里。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •   引言
  •   问题
  •   踩过的坑
  •   解决
  •   总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档