Django中index方法已执行但print无输出,此前同类问题未解惑求助
print()无输出的原因及解决办法 嘿,我来帮你搞清楚这个问题!明明浏览器能正常加载页面,说明index方法确实被调用了,但就是看不到print()的内容,大概率是这几个原因:
你找错了输出的地方!
Django视图里的print()内容是输出到启动服务器的终端/命令行窗口里的,不是浏览器的开发者工具控制台哦!你得回到当初敲python manage.py runserver的那个窗口去看,那里才会显示这些打印内容。很多新手都会不小心去浏览器控制台找,肯定找不到啦。输出被缓冲了,没立即显示
有时候Python的标准输出会有缓冲,尤其是在生产环境或者某些服务器环境下,print的内容不会立刻显示出来。这时候你可以给print加个flush=True参数,强制刷新缓冲区:print("fffffffffffffffffffffffffffffffffffffffffffffffffffff", flush=True) print("request", request, flush=True)这样应该就能立即看到输出了。
服务器类型导致输出被重定向
如果你不是用Django自带的runserver,而是用gunicorn、uWSGI这类生产环境服务器,或者把服务器后台运行了(比如命令后面加了&),那print的内容可能被重定向到日志文件里,或者直接被丢弃了。这种情况下,建议改用Django自带的日志系统来输出内容,而不是依赖print:import logging logger = logging.getLogger(__name__) def index(request): logger.info("fffffffffffffffffffffffffffffffffffffffffffffffffffff") logger.info(f"request {request}") return render(request, 'personal/home.html')然后配置好Django的日志,就能在指定的日志文件里看到输出了。
IDE的控制台配置问题
如果你是用PyCharm、VS Code这类IDE运行服务器,可能IDE的控制台过滤了输出,或者你没切换到正确的运行窗口。检查一下IDE的运行面板,看看是不是把输出折叠了,或者有没有设置输出过滤规则。
先从第一个原因排查,90%的情况都是找错了输出窗口!
内容的提问来源于stack exchange,提问作者YoungMin Park

