Django Forms的錯誤提示


1、error_messages={}

首先,在構建form表單時,可以用"error_messages={}"自定義錯誤信息,例如

 # form.py
1
from django import forms 2 3 # Create your models here. 4 class TestForm1(forms.Form): 5 username = forms.CharField( 6 min_length=3, 7 max_length=20, 8 error_messages={'required':'用戶名不能為空', # 用戶名為空時顯示的錯誤信息 10 'min_length':'大於3個字符', 11 'max_length':'小於20個字符'} 12 )

 

view.py
1 def login(request):
2     if request.method == 'GET':
3         return render(request, 'login.html')
4 
5     elif request.method == 'POST':
8         obj = LoginForms(request.POST)
9         if obj.is_valid():
10           pass
11       else:
12            error = obj.errors
13               return render(request, 'login.html', {'errors': error}) # 以字典的形式發送到前端顯示出來

 

HTML上相對應的部分代碼顯示

1 <div class="form-group">
2             <label for="username">用戶名</label>
3             <input type="text" class="form-control" name="username" id="username" placeholder="請輸入用戶名">
4             <p style="color: red;">{{ errors.username.0 }}</p> {#“.0”的作用是在界面顯示錯誤信息時,可以去掉前面的點"·"#}
5</div>

 


 

2、invalid

我們知道,在定制表單信息的格式時,除了可以自定義外,Django內部給我們備好的,例如可以用Django內部幫我們定義好的slug

1 from django.core import validators 
 
2 class TextForm(forms.Form): 3 # slug指有效URL的一部分,能使URL更加清晰易懂 4 slug = forms.CharField(validators=[validators.validate_slug], 6 error_messages={'required':'不能為空'7 })

如果格式錯誤,則錯誤信息顯示為"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."

那么如何自定義錯誤信息,讓它在格式錯誤時顯示我們自己定義的內容呢?通過查看該函數源碼,我們可以發現內定的格式錯誤信息是由"invalid"這個參數規定的

1 # https://docs.djangoproject.com/zh-hans/2.1/_modules/django/core/validators/#RegexValidator
2 slug_re = _lazy_re_compile(r'^[-a-zA-Z0-9_]+\Z')
3 validate_slug = RegexValidator(
4     slug_re,
5     # Translators: "letters" means latin letters: a-z and A-Z.
6     _("Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."),
7     'invalid'
8 )

 那么,我們就可以在"error_messages={}"里寫上

1 slug = forms.CharField(validators=[validators.validate_slug],
2 
3                            error_messages={'required':'不能為空',
4                                           'invalid':'輸入由字母,數字,下划線或連字符組成的有效“slug”'})

 

這樣,當格式錯誤時,顯示的錯誤信息就是我們自己自定義的

 


 

3、ValidationError

當填入在表單上的信息全部符合格式,但是還可能存在一種錯誤情況,例如注冊用戶時,用戶名重復的情況,這時格式通過表單的信息驗證,但是卻不符合我們自己對於注冊格式的定義時,怎么把錯誤信息顯示出來??這就要用到“ValidationError”

 1 form.py
 2 
 3 from django.core.exceptions import ValidationError
 4 
 5 class LoginForms(BaseForm, forms.Form):
 6   username = forms.CharField()
 7     # 鈎子函數
 8     def clean_username(self):
 9         username = self.request.POST.get('username')
10         is_exsit = models.UserInfo.objects.filter(username=username) # 去數據庫查找用戶名是否已存在
11         if is_exsit:
12             raise ValidationError(message='用戶名已存在', code='invalid')

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM