我有一个表单,允许用户使用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
答案 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")