没看懂为什么username=clean_data['']会报错,而用get就不会报错

没看懂为什么username=clean_data['']会报错,而用get就不会报错

如题

在这里输入代码,可通过选择【代码语言】突出显示

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕美 2020-12-21 14:11:45

同学,你好,当输入的username值不是手机号时,会执行if语句抛出异常,cleaned_Data的值中是没有username的,cleaned_data['username']取不到username的值,因此会报错

http://img1.sycdn.imooc.com//climg/5fe03b5e09eccc4909060297.jpg

http://img1.sycdn.imooc.com//climg/5fe03be509f1835d08410043.jpg

使用get方法时,若键username不在字典中返回默认值 None,因此不会报错

http://img1.sycdn.imooc.com//climg/5fe03c9a09da49cc06400073.jpg

  • 提问者 慕粉1504263447 #1

    clean_username中username=clean_data['username']为什么可以获取到username的值?clean并没有调用clean_username,只是后执行而已,为什么要看clean_username有没有return username?


    2020-12-21 15:00:37
  • 好帮手慕美 回复 提问者 慕粉1504263447 #2

    同学,你好,clean_username中的clean_data['username']得到的是input标签中输入的username值,然后进行判断,若符合条件则返回username的值,clean_data字典中则存在username和对应的值,在clean中才可以正常取到;若没有返回,则clean_data中没有username,表示验证没通过

    http://img1.sycdn.imooc.com//climg/5fe04a7c0913e96d08080182.jpg

    在调用表单clean() 方法的时候,字段的验证方法clean_username已经执行完,即self.cleaned_data 填充的是目前为止已经合法的数据。所以要看有没有返回username

    2020-12-21 15:33:44
  • 提问者 慕粉1504263447 回复 好帮手慕美 #3

    如果self.cleaned_data没有被填充过,使用get或者使用列表来获取username其实都是从input标签中获取到的?如果已经被填充过了,则都是从执行填充的那个函数的返回值来获取?

    2020-12-21 21:26:33
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
3.从网页搭建入门Python Web
  • 参与学习           人
  • 提交作业       218    份
  • 解答问题       3562    个

本阶段带你用Python开发一个网站,学习主流框架Django+Flask是Python Web开发的第一步,在基础知识上实现积分商城的项目开发,体验真实的项目开发流程,提高解决编程问题和效率的能力。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师