1
jokaye 2013-10-12 20:05:46 +08:00
先用django form重构一下吧, 大部分逻辑都帮你弄好了,一个劲的 XXX = request.POST.XXX 真揪心
|
4
hepochen 2013-10-12 20:45:27 +08:00
建议1,不要堆积垃圾代码
username = request.POST.get('username', '').strip() 这行代码能代替你原来的5行代码,如果你需要取的变量很多,那么,这样的代码也会成为垃圾代码,需要自己另写一个常用的以应对 建议2,有意义比简短更重要 pwd_blank 不如 pwd_is_blank, pwd_is_blank = 1 不如 pwd_is_blank = True 建议3, 既然用了Django,就应该了解它最基础的逻辑 我如果记得没错的话,User.objects.filter(username = username)这样返回的一个QuerySet对象,如果用if去判断,那么永远都相当于 True,应该是User.objects.filter(username = username).count(), 是这样么? 建议4, 不要妄下判断,以目前的水平,多数的问题是出在自己的身上 “先if 和 else 均被执行,而且还是先执行else” --> 这样的结论如果成立,你可以给python的核心库打补丁了。 建议5, 不要说本地没问题,不要把问题强加给不相关的方面 呃,你看下自己的数据库,里面的数据可能跟自己想的也不一样。归根结底是表面的逻辑出问题了。对,这个跟SAE也无关。 建议6,还没有学会如何DEBUG吧? |
5
xiaket 2013-10-12 21:00:24 +08:00
@hepochen
建议3, 既然用了Django,就应该了解它最基础的逻辑 我如果记得没错的话,User.objects.filter(username = username)这样返回的一个QuerySet对象,如果用if去判断,那么永远都相当于 True,应该是User.objects.filter(username = username).count(), 是这样么? 如果查询结果为空, 是可以为False的. |
6
hepochen 2013-10-12 21:04:05 +08:00
|
7
clker OP @hepochen 非常感谢这么详细的建议。
关于建议1, 非常感谢!还没有用过strip,掩面。。。。 关于建议2, 非常感谢!这方面确实欠缺。 关于建议3, 我知道filter是返回一个QuerySet,不过一个空的QuerySet会被判为False的。当然大大的建议更好。 关于建议4,确实没有怀疑过SAE或者CPython,所以请大大们帮忙看下代码有什么漏洞。 关于建议5,本地确实是没有问题。另外,数据库的数据确实看了,确实注册成功了,图片也存进去了。就是返回说这个用户名已经注册,但确实是刚刚注册的那个。 关于建议6, 确实debug不是很会。只会看debug页面和log两招。在SAE上面log也确实看到了两个case均被执行。刚刚在google上面搜索了一下,发现django-pdb,去试试。谢谢大大的提醒。 |
13
clker OP |
14
clker OP 太诡异了,有时候没有错,有时候出错。
|
16
booksmith 2013-10-13 08:49:25 +08:00
楼主明显没有去了解django的基础,form设计是一个很不错的选择,至少比你手动这样敲代码来得高效多了。
|
17
ericls 2013-10-13 09:00:39 +08:00 via Android
不能用filter 要用get
|