django自定义表单的使用示例

前端html的内容如下

界面显示如下:

django自定义表单的使用示例_第1张图片

代码如下




    
    Title



{% csrf_token %} {% for u in userForm %}

{{ u }}

{% endfor %}

{{ error }}

后台创建forms.py文件,forms.py文件中生成 UserForm类,然后views.py调用UserForm类(userForm = UserForm() ),然后views.py把userForm返回给前台调用。

Django 的form表单没有携带form外标签,也没有提交按钮,这样的设计更方便开发者修改样式。

models.py中的内容如下

class UserModel(models.Model):
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=32)
    age = models.IntegerField()
    email = models.EmailField()
    date = models.DateField()

上面代码迁移之后生成数据表,views.py中通过这个类来保存数据到数据表中。一般这个表中字段起名字的时候和forms.py中的字段格式保持一致。

forms.py中的内容如下

from django import forms
from django.forms import ValidationError

#一般数据库和表单对应
class UserForm(forms.Form):
    username = forms.CharField(required=False,label="姓名",max_length=32,min_length=6,help_text="名字要6到32位数字")
    password = forms.CharField(label="密码",widget=forms.PasswordInput,max_length=32,min_length=6)
    age = forms.IntegerField(label="年龄")
    email = forms.EmailField(label="邮箱")
    birthday = forms.DateField(label="生日")

    def clean_username(self): #clean_username格式:clean_校验的字段名
        #调用类自身的方法
        username = self.cleaned_data.get('username') #这个方法能在views中调用,也能在这里调用
        if "GM" in username:
            raise ValidationError('违规昵称')
        else:
            return username

forms.py中可以自定义方法进行表单校验,起名的格式为:clean_校验的字段名,然后获取用户输入的数据。对数据判断如果不符合格式的话跑出异常,正确的话返回用户姓名。

views.py中的内容如下

from FormApp.forms import UserForm  #导入定义的UserForm表单
from FormApp.models import UserModel  #导入需要的UserModel数据模型

def registerForm(request):
    userForm = UserForm()  #提交给html,供前端html使用
    error = ""
    if request.method == "POST":
        data = UserForm(request.POST) #把前台传来的数据传递给UserForm()进行校验
        if data.is_valid(): #如果数据合法则执行下面的语句
            clean_data = data.cleaned_data #返回一个放着经过校验的数据的字典

            user = UserModel()  #把数据存储到数据库
            user.username = clean_data.get('username')  #获取到校验过的数据存储到
            user.password = clean_data.get('password')
            user.age = clean_data.get('age')
            user.email = clean_data.get('email')
            user.date = clean_data.get('birthday')
            user.save()
        else: #如果数据不合法的话则把数据的错误返回给error参数
            error = data.errors


    return render(request,'registerForm.html',locals())

在views.py中执行的操作是进行表单验证,验证合法的话就把数据存储到数据库,不合法的话返回错误,表单类的功能主要有两项,一是调用表单供前台使用( userForm = UserForm() ),二是获取前台表单传过来的数据进行校验并存储到数据库( data = UserForm(request.POST) )。当传入数据进行表单校验的时候(data = UserForm(request.POST))就会调用到自定义的校验方法。

你可能感兴趣的:(Django)