2024-11-02 11:56:07
导读:很多朋友问到关于django有什么bug的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!
Django【importMySQLdbasDatabaseModuleNotFoundError:Nomodulenamed‘MySQLdb‘】写Django项目的时候出现bug:importMySQLdbasDatabaseModuleNotFoundError:Nomodulenamed‘MySQLdb’
原因是MySQLdb只适用于python2,在python3一般使用pymysql
所以要在app的__init__.py文件中加入
importpymysql
pymysql.install_as_MySQLdb()
而后又出现bug:raiseImproperlyConfigured('mysqlclient1.4.0ornewerisrequired;youhave0.10.0.
原因是MySQLclient目前只支持到Python3.4,我们使用了更高版本的python
所以还要在__init__.py里加上一句以指定版本
pymysql.version_info=(1,4,13,"final",0)
pythononDjango操作postgreSql的问题你在settings.py里按下边这样写就可以
DATABASE_ENGINE='postgresql_psycopg2'
DATABASE_NAME='数据库名称'
DATABASE_USER='连接数据的用户名'
DATABASE_PASSWORD='密码'
DATABASE_HOST=''
DATABASE_PORT=''
HOST和port不填则为默认的localhost:5432
之后的操作就和sqlite3一样了,
0.96之前的django在windows下连postgresql时有一个bug,具体可以看
Django连接Redis集群问题排查思路和总结
直接就一个连接失败
确认账号密码和端口没问题后,问题同事配置有没验证过,他说直接从网上cv的,完全没经过验证。坑啊!!!
把生产的配置和测试配置比较好,修改了几个地方
信心满满,重启启动djangoshell测试,结果还是连接不上!这时候心情开始有点糟糕~
冷静,djangoshell不行,那用pythonshell直连试试?
一点毛病都没有,直接连上了!
一脸懵逼,这到底是啥问题啊!
结果依然是连接不上。
不知不觉已经到了晚上九点,好累,不想卷了。下班回家吧
回家路上整个脑子都被这个问题困扰着。难道密码中含有@符号的redis集群,Django真的连接不上?反复的问自己。
问了其他同事,生产环境是否有其他的redis集群可以用来调试。很遗憾,并没有。
要不,我自己创建一个redis集群,把密码设置成含有@符号?
可是,自己本地创建redis集群好麻烦啊。要本地安装虚拟机,想到一堆配置就直接劝退。
洗完澡,和老婆聊了1h左右的视频。已经到11点多,准备睡觉?
那是不可能的,带着问题是很难入睡!哎,这个是老毛病了。
突然想到了一个点,最小试错原则。自己搭建本地集群很麻烦,公司又没有多余的集群。
那直接买一个云版的redis集群?说干就干,直接从床上起来,打开电脑。
这时问题又来了,阿里云还是腾讯云?
鉴于双11买了腾讯云2c4g8m的服务器,只要199就能3年。
再对比之前买阿里云那个1c2g1m服务器,3年也要100多。
瞬间对腾讯云好感倍增,决定先买腾讯云。
一顿操作,发现腾讯云是真的难用:
最最最重要,给把实例绑定了安全组后,外网还是无法访问???(不管了,反正我就是很生气)
对腾讯云太失望了,不得不把最后一根稻草压在阿里云身上。
所幸,阿里云没有让我失望!
咔咔咔,一顿操作:
密码中含有@符号,但连接一点毛病都没有!!!
至此,问题终于解决了!!!
我已经迫不及待明天去公司验证,但回过头一看,已经是深夜一点半。
自言自语的说了一句:"睡吧,卷王"
经过对比,发现配置只需要生产的配置仅需要在测试的配置上加多一个:
修复最磨人的bug,往往仅需要一点小小的改动~
为什么测试环境没报错了呢???
因为测试环境的redis集群不需要密码
django网页问题url自动添加了斜杠你把这个URL对应的urls.py里面那条映射定义语句贴上来。估计你在那个地方加了斜杠。正常情况下,浏览器首先查找/page这样的URL,如果找不到,再重定向到/page/这个URL.
Django之APPEND_SLASH配置爬坑测试妹纸∩︿∩反馈BUG,Django项目的某前端页面AJAX报错如下:
MixedContent:Thepageat''wasloadedoverHTTPS,butrequestedaninsecureXMLHttpRequestendpoint''.Thisrequesthasbeenblocked;thecontentmustbeservedoverHTTPS.
一顿某道翻译操作之后,大概意思是HTTPS的页面AJAX请求了一个HTTP协议的接口,由于某种安全机制,引发了混合内容(MixedContent)错误,所以该请求被阻止了。源码片段如下:
开发老司机告诉我们,从报错入手,先查了下什么是混合内容(MixedContent)。
因为HTTPS的S本身就是Secure的意思,现代浏览器最初会针对此类型的内容显示警告,以向用户表明此页面包含不安全的资源。但是即使显示警告,页面也已经加载,用户的安全仍然受到了威胁。所以没过多久,Chrome和Firefox就直接阻断掉了这类的请求。这就是HTTPS页面为什么发送不了HTTP的原因。
what?也就是说,AJAX请求的URL是HTTP协议的?神奇,颠覆了我以往的认知,这种写法不应该是默认访问HTTPS协议的地址嘛?!漫漫爬坑路之开始。
第一次爬坑失败,分析:这种修改仍然无效的话,可能是Django的某种配置造成的。翻文档发现了APPEND_SLASH这个配置。官方文档介绍如下:
大概意思是,如果这个配置为True,请求到URL不能匹配到任何结果且不是以"/"结尾,则Django会自动增加"/"并以HTTP访问它。坑点就在这个HTTP上面呀,难怪不管怎么样都访问的HTTP!
BUG产生的主要原因是项目的URL配置不规范,为了阻止这种跳转,关闭了APPEND_SLASH,并且所有URL都改为以"/"结尾。URL是不是以"/"结尾的区别,可以看这篇文章:
结语:以上就是首席CTO笔记为大家介绍的关于django有什么bug的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。