只允许字母,数字,下划线或连字符django

时间:2013-06-23 15:06:15

标签: django

我有一个表单,允许用户使用UserModel注册我的应用程序。我试图只允许用户名中的字母,数字,下划线或连字符。我一直在尝试使用validate_slug,但我不明白如何使用它可能验证提交的输入是否只是字母,数字,下划线或连字符,否则会引发错误。

有人可以帮助我

class UserRegistration(forms.Form):
    username = forms.CharField()
    email = forms.EmailField()
    password = forms.CharField(
        widget=forms.PasswordInput(render_value=False))


        def clean_username(self):
            username = self.cleaned_data['username']

                if "@" in username:
                    raise forms.ValidationError("Sorry , you cannot use the symbol @")
                return username

1 个答案:

答案 0 :(得分:3)

您可以使用正则表达式匹配,而不是验证每个可能性,只验证允许的字符:

import re
if not re.match(r'^[A-Za-z0-9_-]+$', username):
    raise forms.ValidationError("Sorry , you can only have alphanumeric, _ or - in username")