记django中的各种坑

django报错:TypeError: __str__returned non-string (type bytes)

某个django项目从python2迁移到python3的过程中,出现了以下问题:
TypeError: __str__returned non-string (type bytes)
经查证,是模型类中的 str 方法造成的,原因是python3中 str 不能接收bytes类型的数据,这和python2/3的编解码方式是有关系的。
下面给出python2和python3的写法:

    # 类型名称
    typename = models.CharField(max_length=50)
    # 逻辑删除
    isDelete = models.BooleanField(default=False)

    def __str__(self):
        return self.typename.encode("utf-8") # python2写法
        return self.typename                 # python3写法
    class Meta:
        verbose_name = '文章类型'
        verbose_name_plural = '文章类型'

这个问题也会倒是无法查询数据库,在我制作用户名注册时使用ajax验证用户名是否已存在时,这个问题困扰了我好久,一直无法解决,因为没有报错信息,通过各种调试都没有找到问题出在了哪,最后决定使用django的admin管理界面来查看数据库时,发现了这个报错,替换为py3写法后成功解决,虽然很恼火,但是也受益良多,对于整个逻辑也更清晰了,调试能力也上升了。

js,css改动无法即时体现

初次进行web工程开发的人可能会碰到这样的情况:自己在明明对工程上的某个js或css文件进行了修改,并提交到服务器上去了。但是在客户端浏览器里面打开页面时,并没有看到修改后的效果,而是该js文件的旧版本的效果。

如果了解过浏览器缓存就知道,为了效率,浏览器通常会缓存js/css文件。如果没有清除浏览器缓存的该js文件的话,js的修改效果就不会起作用,因为浏览器还是用的缓存在本地的js文件。
所以需要清空浏览器缓存数据
md,之前改了js代码发现没效果,害我调试半天,心态崩了。

待续。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值