首页>>后端>>Python->django有什么bug?

django有什么bug?

时间:2023-12-12 本站 点击:0

导读:很多朋友问到关于django有什么bug的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!

Django【import MySQLdb as Database ModuleNotFoundError: No module named ‘MySQLdb‘】

写Django项目的时候出现bug:import MySQLdb as Database ModuleNotFoundError: No module named ‘MySQLdb’

原因是MySQLdb只适用于python2,在python3一般使用pymysql

所以要在app的__init__.py文件中加入

import pymysql

pymysql.install_as_MySQLdb()

而后又出现bug:raise ImproperlyConfigured('mysqlclient 1.4.0 or newer is required; you have 0.10.0.

原因是MySQLclient 目前只支持到 Python3.4,我们使用了更高版本的 python

所以还要在__init__.py里加上一句以指定版本

pymysql.version_info = (1, 4, 13, "final", 0)

python on Django操作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 的,完全没经过验证。坑啊!!!

把生产的配置和测试配置比较好,修改了几个地方

信心满满,重启启动 django shell 测试,结果还是连接不上!这时候心情开始有点糟糕~

冷静, django shell 不行,那用 python shell 直连试试?

一点毛病都没有,直接连上了!

一脸懵逼,这到底是啥问题啊!

结果依然是连接不上。

不知不觉已经到了晚上九点,好累,不想卷了。下班回家吧

回家路上整个脑子都被这个问题困扰着。难道密码中含有 @ 符号的 redis 集群,Django 真的连接不上?反复的问自己。

问了其他同事,生产环境是否有其他的 redis 集群可以用来调试。很遗憾,并没有。

要不,我自己创建一个 redis 集群,把密码设置成含有 @ 符号?

可是,自己本地创建 redis 集群好麻烦啊。要本地安装虚拟机,想到一堆配置就直接劝退。

洗完澡,和老婆聊了 1h 左右的视频。已经到 11 点多,准备睡觉?

那是不可能的,带着问题是很难入睡!哎,这个是老毛病了。

突然想到了一个点,最小试错原则。自己搭建本地集群很麻烦,公司又没有多余的集群。

那直接买一个云版的 redis 集群?说干就干,直接从床上起来,打开电脑。

这时问题又来了,阿里云还是腾讯云?

鉴于双 11 买了腾讯云 2c 4g 8m 的服务器,只要 199 就能 3 年。

再对比之前买阿里云那个 1c 2g 1m 服务器,3 年也要 100 多。

瞬间对腾讯云好感倍增,决定先买腾讯云。

一顿操作,发现腾讯云是真的难用:

最最最重要,给把实例绑定了安全组后,外网还是无法访问???(不管了,反正我就是很生气)

对腾讯云太失望了,不得不把最后一根稻草压在阿里云身上。

所幸,阿里云没有让我失望!

咔咔咔,一顿操作:

密码中含有 @ 符号,但连接一点毛病都没有!!!

至此,问题终于解决了!!!

我已经迫不及待明天去公司验证,但回过头一看,已经是深夜一点半。

自言自语的说了一句:"睡吧,卷王"

经过对比,发现配置只需要生产的配置仅需要在测试的配置上加多一个 :

修复最磨人的 bug,往往仅需要一点小小的改动~

为什么测试环境没报错了呢???

因为测试环境的 redis 集群不需要密码

django网页问题 url自动添加了斜杠

你把这个URL对应的urls.py里面那条映射定义语句贴上来。估计你在那个地方加了斜杠。正常情况下,浏览器首先查找/page这样的URL,如果找不到,再重定向到/page/这个URL.

Django之APPEND_SLASH配置爬坑

测试妹纸∩︿∩反馈BUG,Django项目的某前端页面AJAX报错如下:

Mixed Content: The page at '' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint ''. This request has been blocked; the content must be served over HTTPS.

一顿某道翻译操作之后,大概意思是HTTPS的页面AJAX请求了一个HTTP协议的接口,由于某种安全机制,引发了 混合内容( Mixed Content )错误,所以该请求被阻止了。源码片段如下:

开发老司机告诉我们,从报错入手,先查了下什么是混合内容( Mixed Content )。

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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Python/27927.html