今天准备离职的同事交接工作,有一段代码,大家看看。

2019-10-09 21:36:34 +08:00
 CLANNADHH
今天准备离职的同事交接工作,有一段代码,大家看看。
django 写的接口,POST 请求,一共四个参数,下面用 a,b,c,d 代替

a = request.post.get("a")
b = request.post.get("b")
c = request.post.get("c")
d = request.post.get("d")

try:
a + b + c + d + "abcd"
except:
# 这里是错误的处理。

后来询问该同事,他说这是做类型检测,不是字符串就会报错。
我:!!! 哦~
14659 次点击
所在节点    Python
75 条回复
Levi233
2019-10-10 14:31:24 +08:00
@simonhunter 额。。看错你的问题了不好意思
oahebky
2019-10-10 14:50:14 +08:00
如果是希望 a, b, c, d 都存在值,post 的时候这四个都要有,那下面这个做法不好吗?

try:
(游标卡尺占位)a = request.post["a"]
(游标卡尺占位)b = request.post["b"]
(游标卡尺占位)c = request.post["c"]
(游标卡尺占位)d = request.post["d"]
except:
(游标卡尺占位)# ...

写个 a+b+c+d+"" 不是很奇怪吗?
Trim21
2019-10-10 14:50:47 +08:00
@simonhunter 看这个写法大胆猜测一下大概是不需要判断到底 abcd 哪个是空的,直接返回请求错误就行了。
haon
2019-10-10 14:53:19 +08:00
我也这样写过...
lrxiao
2019-10-10 14:53:38 +08:00
__add__(
45HXlKzal6W56zUJ
2019-10-10 15:19:32 +08:00
@lihongjie0209 #40 你确定你用过 django?
tabris17
2019-10-10 15:23:25 +08:00
@wuwukai007 也可能是 None
hmxxmh
2019-10-10 15:24:13 +08:00
@ila 是的,很好用
lihongjie0209
2019-10-10 15:33:11 +08:00
@dicc #66 自己扩展一下或者是写一个工具类都可以啊。

这种常见的框架扩展一下内置的方法应该不难吧
EdwardLeeJan
2019-10-10 15:57:06 +08:00
你不是应该高兴么,毕竟他要离职了
babedoll
2019-10-10 16:00:46 +08:00
妙啊~
fuxiuyin
2019-10-10 16:11:43 +08:00
其实还好,不想改的话加句注释。他可能是不太清楚 HTTP 要求所有数据都以字符串发送,所以解出来也都是字符串,就算是真用 request.post(url, data={'a': True})传过去也是'True',所以不用担心会是其他类型,只可能是有这个参数或者没这个参数。所以不想改的话就打个注释留着,改的话就改成
try:
a = request.POST['a']
....
就行了
cyrbuzz
2019-10-10 17:32:17 +08:00
楼主头像是为了契合这代码换的?
dasabi
2019-10-12 21:17:35 +08:00
之前 python 里面用过这种方法,比较取巧但是难登大雅之堂。你的同事 python 至少有一年经验
songkai
2019-10-18 18:57:53 +08:00
未来的美团外卖人员!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/607625

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX