用户注册 --- 反序列化器 --- error_messages --- 错误(error_message)少写个sdebug没有按步骤多前进几不
报错TypeError: __init__() got an unexpected keyword argument 'error_message'
问题:
1 少写个s
2 debug没有按步骤多前进几不
3 正则匹配电话号码加了/,导致总是出错
序列化器里的serializers.ValidationError()是raise的不是return的,dields的字段并不需要有顺序
2014 0724
事出:
meiduo_oauth_serializers
数据库redis的库名少加个s
序列化器少写一个字段
sms_code = serializers.CharField(label='短信验证码')
redis_conn = get_redis_connection('verify_codes')
对parse_qs和json.loads了解不清楚使用失误
parse_qs和urlencode是一对,分别为将查询字符串转换成字典和将字典转换成查询字符串
loads和dumps是一对,分别将json字符串转换成字典,和将字典转换称json字符串
此处还涉及到版本控制的问题,debug一定要经常进行,执行了一个功能就debug一次,看数据是否完整交互,这次的openid就没有传给后端,原因是获取qq传过来的response里的openid的时候准备欠妥,
阅读qq的接口文档
urlopen(url)会获得一个返回包
callback( {"client_id":"YOUR_APPID","openid":"YOUR_OPENID"} );
callback( {"client_id":"YOUR_APPID","openid":"YOUR_OPENID"} );\n
当初用的parse_qs来获取字典出了问题没报错返回了一个空字典,又来获取openid获取为None也没报错,所以返回给前端的openid就是个错的,下次在oauth的序列化器validate的时候总是报错,原因是出现了好多小问题啊
jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
报错说是指定的文件是无效的,就去查自己的settings有没有问题,这个思路是正常的,怕自己写错就粘贴,又找到jwt_response_polay_handler感觉没问题,又去找之前的使用到这个地方的users views 尝试重新申请账户,发现可以用,遂去看了一下api_settings的导包路径,发现错误,from rest_framework.settings import api_settings DRF自己的导包路径,而这次我们用了jwt之后就是jwt的settings导包路径能找到jwt设置的配置了,所以应该找下边这个路径
from rest_framework_jwt.settings import api_settings,路径的问题是一方面,另一方面也有经验不足,无效的引用第一时间查导包路径,导包不能再随意用 alt enter了,快捷导入的方式只能在自己敲过很多次之后再用
导包路径错误和无效引用的关系
手写导包路径
快速导入需要仔细核对应该导入哪一个
20180725
为什么保存邮箱的序列化器只有id和email
激活邮件为什么有两个verify_url
邮箱验证里celery的导包,django.conf和django.core.mail
开启celery
celery -A celery_tasks.main worker -l info
找不到地方发送邮件的时候就重写EmailSerializer的update在保存对象之后返回对象之前
执行脚本的shell和python脚本执行的环境和内容
视图集先决定包含的是哪些行为
不同的行为可能所需要的查询集不一样