簡體   English   中英

如何在 django 中自定義 UserCreationForm 驗證

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM