Python django编程错误提示,自己编程中遇到的错误总结2018年11月8日更新

本人也是初学Python和django,因此可以说是天天会遇到各种各样自己不知道或者没见过的错误。之前的时候,并没有把所有遇到的问题,收集整理起来分享给大家。但是还是希望,从现在将自己平时学习中遇到的问题分享给大家做一些参考。也许有些是正确也许是错误。也欢迎大家一起来评论交流!!!此文章本人会陆陆续续的不断进行更新和补充完善,一起加油~~~~~~~

1.AttributeError(“'str' object has no attribute 'read'”)

遇到这种提示时请尝试将json.loads()来替换json.load() 

2.TypeError: 'username' is an invalid keyword argument for this function

请查看数据模型文件,数据读取等地方是否将username编写错误

3.AttributeError: 'float' object has no attribute 'split'

这种情况请查看是否某些单元格为空的情况缺少条件判断

4.ValueError: Unable to configure handler 'scprits_handler'

请检查所有'scprits_handler'的地方是否有拼写错误。或者检查'scprits_handler'在定义的时候是否没有定义成功,有时候可能缺少一个“,(逗号)”从而并没有被系统的拼写错误检查出来

5.pip install安装提示:Unknown or unsupported command 'install'

首先使用命令where pip,找到pip的安装目录,然后cd到目录下再执行pip install安装,搞定

6.UnboundLocalError: local variable 'key_value' referenced before assignment

key_value没有定义,因此我在定义的函数中添加了一句话key_value='',搞定了

7.NameError: name 'false' is not defined

python中的false必须要大写,将false改成False即可

8:TypeError: 'a' is an invalid keyword argument for print()

查看print(a)中a是不是写错了

9:print(test(x,y))打印出来None

def test(x, y):
     print('x+y=', x+y)
     # return a*b
# if __name__ == '__main__':
     # test(1, 3)
#
# add(5, 45)

print(test(11, 12))

输出结果:

原因是因为在定义的函数test(x,y)中没有return语句。所以在执行print(test(11,12))语句里面的test(11,12)的时候,首先调用test并传参(11,12),在test中执行print('x+y=', 11+12)然后打印输出x+y=23,然后继续执行print(test()),因为test这个方法定义的时候并没有返回值,所以默认为None,然后又打印出来一个None

10:AttributeError: 'dict' object has no attribute 'encode'

原因是因为字典无法使用encode方法进行编码,使用encode方法编码的可以是一个字符串。比如str1 = 'Hello world 你好',可以使用str1.encode(),而dict1 = {'n2':840,'la':39.98049465154441,'l':False}无法进行dict1.encode

11.configparser.DuplicateSectionError: Section 'type' already exists

在做配置文件的读写时,写入操作请检查写入的参数在配置文件中是否已经存在

12.执行文件写入的时候,发现把源文件内容清空了

原本我的代码逻辑是读取一个配置文件,判断配置文件中‘type’分组是否存在,如果不存在则添加一个分组type,并且给他设置一个name(stuno)和value(10211201)

import configparser

#  实例化configParser对象
config = configparser.ConfigParser()
# -read读取ini文件
config.read('C:\\Users\\songlihui\\PycharmProjects\\AutoTest_02\\config\\config.ini', encoding='GB18030')
list = []
list = config.sections()# 获取到配置文件中所有分组名称
if 'type' not in list:# 如果分组type不存在则插入type分组
    add1 = config.add_section('type')

add2 = config.set('type', 'stuno', '10211201')# 给type分组设置值

o = open('C:\\Users\\songlihui\\PycharmProjects\\AutoTest_02\\config\\config.ini', 'w')
config.write(o)
o.close()

可是我发现当我屏蔽掉read这句话之后,我的配置文件中除了新插入的数据,其他都被删除了

总结原因:当你进行文件的读操作的时候,文件中原本的内容已经被读进缓存中,这时候再对文件进行'w'写操作的时候,会将缓存中文件打开时的老数据和新增加的新数据,一块再写入进去,所以内容不会删除,看似像追加和新增。但是如果没有执行read的文件读操作,这时候缓存中其实只有本次新增加的内容,然后在‘w’执行写操作的时候,其实是覆盖,而不是追加。执行后再打开你的配置文件,发现老数据被清空了,只有本次新增加的新数据。

13.Python在用 flask 框架向前端返回 json 格式数据时,出现中文乱码

我的接口代码如下:

import flask
from flask import request, jsonify

'''
flask: web框架,通过flask提供的装饰器@server.route()将普通函数转换为服务
登录接口,需要传url、username、passwd
'''
# 创建一个服务,把当前这个python文件当做一个服务
server = flask.Flask(__name__)
# server.config['JSON_AS_ASCII'] = False
# @server.route()可以将普通函数转变为服务 登录接口的路径、请求方式
@server.route('/login', methods=['get'])
def login():
    # 获取通过url请求传参的数据
    username = request.values.get('name')
    # 获取url请求传的密码,明文
    pwd = request.values.get('pwd')
    # 判断用户名、密码都不为空,如果不传用户名、密码则username和pwd为None
    if username and pwd:
        if username=='songlihui' and pwd=='111':
            resu = {'code': 200, 'message': '登录成功'}
            return jsonify(resu)  # 将字典转换为json串, json是字符串
        else:
            resu = {'code': -1, 'message': '账号密码错误'}
            return jsonify(resu)
    else:
        res = {'code': 10001, 'message': '参数不能为空!'}
        return jsonify(res)

if __name__ == '__main__':
    server.run(debug=True, port=8888, host='0.0.0.0')# 指定端口、host,0.0.0.0代表不管几个网卡,任何ip都可以访问

请求后返回结果:

修改代码:在顶部添加import json,中间部分将return jsonify(resu)修改为return json.dumps(resu, ensure_ascii=False)后:

14.Python错误提示:TypeError: 'NoneType' object is not callable的解决办法

方法在调用的时候请将()去掉

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值