1
jasonding 2015-04-15 16:25:07 +08:00 1
封装成一个独立的方法呗,
|
2
royzhanggy 2015-04-15 16:28:17 +08:00 1
装饰器
|
3
batman2010 2015-04-15 16:28:48 +08:00
用一个数组把所有合法值封起来。
|
4
batman2010 2015-04-15 16:30:20 +08:00
@batman2010 看错要求了,sorry
|
5
sumhat 2015-04-15 16:33:16 +08:00 1
如果是面向对象的语言,尽量把参数封装成自定义的类,然后在类构造的时候检查,类还可以提供类似 isValidForXXX() 的方法作特殊的检查。
|
7
Septembers 2015-04-15 16:48:10 +08:00
|
8
loading 2015-04-15 16:53:39 +08:00 via iPhone
把判断写到一个函数里调用,这样一般情况下就看不到了,等发现更好方法时,再修改那个函数。
你没代码,帮不到你。 |
9
gkiwi 2015-04-15 17:02:08 +08:00
听楼主的意思像是前端post过来数据,需要不停的写if来进行判断.
说实话,没有太好的方法. 不过,而一些较为通用的规则,比如不能为空啊,必须为数字之类的可以封装成装饰器~ 我的某个not_empty: https://gist.github.com/5d84822a5b0d707c53d8.git 不过wtforms也许会对你有些帮助. https://wtforms.readthedocs.org/en/latest/ |
10
gkiwi 2015-04-15 17:04:12 +08:00
上个git貌似打不开,可以瞅下我的代码: https://gist.github.com/bugkiwi/5d84822a5b0d707c53d8
|
11
gkiwi 2015-04-15 17:05:27 +08:00 1
🌰
``` @bp.route('/order/comment',methods=['GET','POST']) @login_required @not_empty('orderId',POST=['servicesc','envsc','tastesc','foods']) def order_comment(): pass ``` |
13
bcxx 2015-04-15 17:08:02 +08:00 1
FYI 可以参考一下 WTForm 这种声明式的方法来做,会好看很多(也好维护)
|
15
155 2015-04-15 17:21:18 +08:00 1
schema、marshmallow
|
16
incompatible 2015-04-15 17:21:57 +08:00 2
大量的if else基本可以用decorator模式或chain of responsibility来代替
|
17
mulog 2015-04-15 17:28:49 +08:00 1
可以看看 voluptuous https://github.com/alecthomas/voluptuous
|
18
FastMem 2015-04-15 17:44:13 +08:00
封装, PHP function is_chinese($value) {//Do}
然后用的时候这样 if(is_chinses($_POST['Comments'])) {} else {} |
19
Richardzhibu 2015-04-15 19:09:54 +08:00
我一般把参数类型分类,比如int、 uint、long、float、str、mail、url、password,然后把业务规则分配到到这些类型里
|
20
FrankFang128 2015-04-15 19:11:35 +08:00
表编程
|
21
xavierskip 2015-04-15 19:20:43 +08:00
什么样的请求参数?
可以用 **kwds 参数传递来接受参数 python判断流程可以用 try...except... |
22
laike9m 2015-04-15 19:47:06 +08:00
贴代码吧,说不定真正的问题并不出在if else上面
|
23
OpooPages 2015-04-15 22:08:25 +08:00 via iPad
适配器模式。
|
24
messense 2015-04-15 22:12:32 +08:00
可以试试用 JSON Schema 描述校验,用 https://github.com/sunlightlabs/validictory 这个库校验。
|
25
saber000 2015-04-15 22:42:07 +08:00
@messense JSON Schema更多的文档可以看这里:http://spacetelescope.github.io/understanding-json-schema/
这种方法很推荐,现在基本上已经成为我的标准方法.具体有多爱呢,我基于JSON Schema写了一个序列化任意Python对象的库,不要脸发出来求指教. |
26
virusdefender 2015-04-16 00:03:59 +08:00
参考django的form或者django rest framework的serializer 就是写一个类,里面写明字段和验证方法,然后进行验证
|
27
kzzhr 2015-04-16 01:44:34 +08:00
可以在某些地方放一些规则,比如正则。然后用循环的方式依次判断。
这样可以吧。。随口说的莫喷。。。 |
28
m_z 2015-04-16 09:24:14 +08:00
前端验证呢?不通过不提交...
|
29
Him OP |
30
Catstyle 2015-04-16 09:40:00 +08:00
@gkiwi
if params is None and params == [] and len(kargs) == 0: raise Exception("You should give me some params;") 这个判断确定能跑过? 前两个有什么情况能为True? |
32
MarioLuisGarcia 2015-04-16 11:31:41 +08:00
定义里是kkargs, 判断里是kargs了啊
|
33
staticor 2015-04-16 12:31:06 +08:00 1
http://simeonfranklin.com/blog/2012/jul/1/python-decorators-in-12-steps/
楼主如果想看看装饰器作 类型限制的话可以看看这个. 当时我连decorator是啥都不知道呢, 看完这个就多少明白了. |
34
ligyxy 2015-07-15 14:15:09 +08:00
property装饰器
|