0

我有一个表单,允许用户使用 UserModel 注册我的应用程序。我试图在 username 中只允许使用字母、数字、下划线或连字符。我一直在尝试使用 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
4

1 回答 1

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") 
于 2013-06-23T15:11:34.343 回答