本文实例为大家分享了Django实现表单验证的具体代码,供大家参考,具体内容如下
models.py
1
2
3
4
5
6
7
8
9
10
11
12
13
|
class Users(models.Model): nickname = models.CharField(max_length = 16 , null = False , blank = False , unique = True ) email = models.EmailField(max_length = 32 , null = False , blank = False , unique = True ) password = models.CharField(max_length = 64 , null = False , blank = False ) head = models.ImageField(default = "decault.png" ) age = models.CharField(max_length = 3 ,blank = True ,null = True ) sex = models.CharField(max_length = 2 , blank = True , null = True ) isactivate = models.BooleanField(default = False ) def save( self ): if not self .password.startswith( 'pbkdf2_' ): self .password = make_password( self .password) super ().save() |
form.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
from django import forms from django.core.exceptions import ValidationError from user.models import Users #定义验证器 def nickname_validate(nickname): u = Users.objects. filter (nickname = nickname) if len (u): print ( len (u)) raise ValidationError( '用户名已存在' ) #定义表单 class RegisterForm(forms.Form): nickname = forms.CharField(validators = [nickname_validate], label = '用户名' , max_length = 16 , min_length = 4 , required = True , widget = forms.TextInput(), ) password = forms.CharField(label = '密码' , max_length = 64 , min_length = 6 , required = True , widget = forms.PasswordInput()) email = forms.EmailField(label = '邮箱' , max_length = 32 , required = True ) age = forms.CharField(label = '年龄' , max_length = 3 , required = False ) sex = forms.ChoiceField(label = '性别' , choices = (( 0 , '男' ),( 1 , '女' ),), required = False ) |
view.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
from user.forms import RegisterForm from user.models import Users def register(request): if request.method = = 'POST' : form = RegisterForm(request.POST) if form.is_valid(): u = Users() u.nickname = form.cleaned_data[ 'nickname' ] u.email = form.cleaned_data[ 'email' ] u.password = form.cleaned_data[ 'password' ] u.age = form.cleaned_data[ 'age' ] u.sex = form.cleaned_data[ 'sex' ] u.save() return render(request, 'user_info.html' ) else : return render(request, 'register.html' ,context = { 'form' :form, 'errors' : form.errors}) else : form = RegisterForm() return render(request, 'register.html' ,context = { 'form' :form}) |
register.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<!DOCTYPE html> < html lang = "en" > < head > < meta charset = "UTF-8" > < title >注册</ title > </ head > < body > < form class = "form" action = "{% url 'user:register' %}" method = "post" > {% csrf_token %} < table > {{ form.as_p }} </ table > < button type = "submit" class = "btn btn-primary btn-block" >注册 </ button > < input type = "hidden" name = "next" value = "{{ next }}" /> </ form > </ body > </ html > |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/weixin_38748717/article/details/79296467