django 用这代码def clean_username(self): 去验证用户名字符长度。总是不成功?完整代码如下。大家帮小弟我看看是哪的有关问题
django 用这代码def clean_username(self): 去验证用户名字符长度。总是不成功?完整代码如下。大家帮我看看是哪的问题?
我现在的想法是它能实现这样的功能:
1.验证用户名中的字符问题
2.验证用户名字符长度问题
3.验证用户注册信箱是不是已被用过
4.验证用户名是不是被注册过。
现在1 , 3 , 4都可以实验
我现在加上2 验证用户名字符长度问题后。就坏了。
我知道问题之一是 if num_words < 4:
这后面 return username 后。后面的就不再执行了。
但是我不加这句 如果用户名长度大于4就会出错。不大于4也出错。
这样的功能应该怎么实现好呢?
------解决方案--------------------
len(username.split())->len(username)
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)