我目前正在尝试使用 UserCreationForm 构建用户注册表单,但它不适合我的需求。首先,用户名字段不仅接受字母符号和数字,还接受@。+ - _。我想让它只接受拉丁文和西里尔文字母和数字,但我找不到任何信息。我还想更改它的其他属性,例如最大长度。此外,在我们进行这些更改之后,客户端和服务器端验证过程都会拒绝禁用符号吗?
这是我在 forms.py 中已有的一些代码:
class CreateUserForm(UserCreationForm):
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
Run Code Online (Sandbox Code Playgroud)
和views.py:
def register(request):
form = CreateUserForm()
if request.method == 'POST':
form = CreateUserForm(request.POST)
if form.is_valid():
form.save()
context = {'form': form}
return render(request, 'register.html', context)
Run Code Online (Sandbox Code Playgroud)
另外,这个默认的 UserCreationForm 是否与注册用户相关?或者我自己写一个会更好吗?
你必须知道这毕竟UserCreationForm是一个 Django 。Form因此表单验证机制适用于它。
正如文档提到的,您可以通过创建一个保存此名称格式的方法来验证自定义字段:clean_<field name>,在您的情况下是:clean_username。
这是现场清洁方法的示例:
def clean_username(self):
username = self.cleaned_data['username']
# Do whatever you want
if error_case: # Write your own error case.
raise forms.ValidationError("Error Message") # Your own error message that will appear to the user in case the field is not valid
return email # In case everything is fine just return user's input.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1724 次 |
| 最近记录: |