[英]How to customize UserCreationForm validation in django
我目前正在嘗試使用 UserCreationForm 構建用戶注冊表單,但它不適合我的需要。 首先,用戶名字段不僅接受字母符號和數字,還接受@。 + - _。 我想讓它只接受拉丁文和西里爾文字母和數字,但我找不到任何信息。 我也想改變它的其他屬性,比如最大長度。 此外,在我們進行這些更改之后,客戶端和服務器端的驗證過程都會拒絕被禁止的符號嗎?
這是我在 forms.py 中已有的一些代碼:
class CreateUserForm(UserCreationForm):
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
和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)
另外,這是默認的 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.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.