django有什么bug?

是这样的,想请教下,django有什么bug?
最新回答
战皆罪

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的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。