Python 如何为DJANGO中的特殊字符创建验证程序?
我的网站是活的,但它有一个问题。每当有人在用户名中使用特殊字符注册时,服务器就会给出一个错误(对于整个站点),因为slug无法显示特殊字符,例如@,-,但django用户模型允许用户使用特殊字符注册。是否有一种方法可以在我的注册表单中插入验证程序错误 下面是我的表单.pyPython 如何为DJANGO中的特殊字符创建验证程序?,python,django,Python,Django,我的网站是活的,但它有一个问题。每当有人在用户名中使用特殊字符注册时,服务器就会给出一个错误(对于整个站点),因为slug无法显示特殊字符,例如@,-,但django用户模型允许用户使用特殊字符注册。是否有一种方法可以在我的注册表单中插入验证程序错误 下面是我的表单.py from django.contrib.auth.models import User from django import forms from captcha.fields import CaptchaField cla
from django.contrib.auth.models import User
from django import forms
from captcha.fields import CaptchaField
class SignUpForm(forms.ModelForm):
captcha = CaptchaField()
password = forms.CharField(max_length= 15, widget=forms.PasswordInput)
def clean_username(self):
data = self.cleaned_data['username']
if not data.islower():
raise forms.ValidationError("Usernames should be in lowercase")
return data
class Meta:
model = User
help_texts = {
'username': 'Required. Please only use lower-case alphabets and
numbers.',
}
fields = ['username', 'email', 'password']
views.py
类注册表单视图(视图):
form_class=注册表单
模板名称='home/signup.html'
#if there is no sign up yet
def get(self,request):
form = self.form_class(None)
return render(request, self.template_name, {'form': form})
#if going to sig up
def post(self,request):
form = self.form_class(request.POST)
if form.is_valid():
#it takes information but does save it
user = form.save(commit = False)
#cleaned normalized data
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user.set_password(password)
user.save()
#returns if it is all correct
user = authenticate(username = username, password = password)
if user is not None:
if user.is_active:
login(request, user)
return redirect("userprofile:newprofile")
return render(request, self.template_name, {'form': form})
如果您想验证只接受数字或字母进行登录,对吗 你可以这样做:
def validate_digits_letters(word):
for char in word:
if not char.isdigit() and not char.isalpha():
return False
return True
def clean_username(self):
data = self.cleaned_data['username']
if not data.islower():
raise forms.ValidationError("Usernames should be in lowercase")
if not validate_digits_letters(data):
raise forms.ValidationError("Usernames contains characters that are not numbers nor letters")
return data
如果您想验证只接受数字或字母进行登录,对吗 你可以这样做:
def validate_digits_letters(word):
for char in word:
if not char.isdigit() and not char.isalpha():
return False
return True
def clean_username(self):
data = self.cleaned_data['username']
if not data.islower():
raise forms.ValidationError("Usernames should be in lowercase")
if not validate_digits_letters(data):
raise forms.ValidationError("Usernames contains characters that are not numbers nor letters")
return data
你可以用这个
你可以用这个非常感谢:)非常感谢:)非常感谢:)谢谢你,小朋友,它对我不起作用,但它引导我走向正确的方向:)。祝你有一个愉快的一天。谢谢你,小朋友。这对我来说并不管用,但它引导我走向正确的方向:)。祝您今天过得愉快。