读书人

django 用这代码def clean_username(s

发布时间: 2013-09-15 19:58:13 作者: rapoo

django 用这代码def clean_username(self): 去验证用户名字符长度。总是不成功?完整代码如下。大家帮我看看是哪的问题?

    def clean_username(self):
username = self.cleaned_data['username']
num_words = len(username.split())
if not re.search(r'^\w+$', username, re.U):
raise forms.ValidationError('用户名有问题,不能注册。字符太少或含用奇怪字符!')
if num_words < 4:
raise forms.ValidationError('用户名不能少于四个字符!')
return username
try:
User.objects.get(username=username)
except ObjectDoesNotExist:
return username
raise forms.ValidationError('用户名存在,请修改后注册.')


我现在的想法是它能实现这样的功能:

1.验证用户名中的字符问题

2.验证用户名字符长度问题

3.验证用户注册信箱是不是已被用过

4.验证用户名是不是被注册过。

现在1 , 3 , 4都可以实验

我现在加上2 验证用户名字符长度问题后。就坏了。

我知道问题之一是 if num_words < 4:
这后面 return username 后。后面的就不再执行了。

但是我不加这句 如果用户名长度大于4就会出错。不大于4也出错。

这样的功能应该怎么实现好呢?

[解决办法]
len(username.split())->len(username)

读书人网 >perl python

热点推荐